窗口加载显示后与窗口最大化时动态画线的问题

esrichen 2009-09-08 05:49:07
先定义了一个画图类,类的构造函数是这样的:
Public Class Map
Private GF As Graphics
Private _Pen As Pen
Public Sub New(ByRef ShowControl As PictureBox)
GF = Graphics.FromHwnd(ShowControl.Handle)
GF.PageUnit = GraphicsUnit.Millimeter
_Pen = New Pen(Color.Black, 0.12)
Dim _PF(0) As PointF
_PF(0).X = ShowControl.Width
_PF(0).Y = ShowControl.Height
TransPTF(_PF)
Ox = 4
Oy = _PF(0).Y - 4
GF.TranslateTransform(Ox, Oy)
GF.ScaleTransform(1, -1)
End Sub

'还有就是一个画线过程:
Public Sub onpaint()
GF.Clear(Color.White)
GF.DrawLine(_Pen, 0, 0, 10, 10)
End Sub

End Class

在窗口代码里是这样的:
Private _M As Map
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
_M = New Map(PictureBox1)
End Sub

'这个不起作用
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
_M.onpaint()
End Sub

'这个也不起作用
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
_M.onpaint()
End Sub



其实我就是想在窗口加载成功显示后在picturebox里显示一条线,并且在最大化时也显示出来,该怎么做?

(上面的代码执行后,移动窗体被其他窗口掩盖在移出来时线条在)
...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
esrichen 2009-09-22
  • 打赏
  • 举报
回复
自己顶一下
esrichen 2009-09-09
  • 打赏
  • 举报
回复
不会没人知道吧?
esrichen 2009-09-09
  • 打赏
  • 举报
回复
dylike,你的代码我比较郁闷。

这个e是不是要传到类中的onpaint()方法里?

因为我的绘图函数在类里,那么在窗口代码的该绘图函数在哪里调用才能在窗口加载显示的时候把线画上去而不被刷掉?
dylike 2009-09-09
  • 打赏
  • 举报
回复
Public Class Map
Private _Pen As Pen
Public Sub New(ByRef ShowControl As PictureBox)
_Pen = New Pen(Color.Black, 0.12)
Dim _PF(0) As PointF
_PF(0).X = ShowControl.Width
_PF(0).Y = ShowControl.Height
TransPTF(_PF)
Ox = 4
Oy = _PF(0).Y - 4
End Sub

'还有就是一个画线过程:
Public Sub onpaint()
e.graphics.Clear(Color.White)
e.graphics.TranslateTransform(Ox, Oy)
e.graphics.ScaleTransform(1, -1)
e.graphics.DrawLine(_Pen, 0, 0, 10, 10)
End Sub

End Class

在窗口代码里是这样的:
Private _M As Map
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
_M = New Map(PictureBox1)
End Sub


'这个不起作用
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
_M.onpaint()
End Sub


'这个也不起作用
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
_M.onpaint()
End Sub

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧