读书人

请大家帮看一下这段代码如何实现图形

发布时间: 2012-01-28 22:06:13 作者: rapoo

请大家帮看一下这段代码,怎么实现图形的重绘
Private xy1, xy2 As Point
Private ismousedown As Boolean

Private Sub pictruebox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)handles pictruebox1.mousedown
xy1 = e.Location
ismousedown = True
End Sub

Private Sub pictruebox_Mousemove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)handles pictruebox1.mousemove
xy2 = e.Location
If ismousedown Then
Dim penwidth As String = IIf(ComboBox_penwidth.SelectedIndex > = 1, ComboBox_penwidth.SelectedIndex, 1)
Dim cpen As New Pen(pic_fillcolor.BackColor, penwidth)
Dim pa As System.Drawing.Graphics
Dim pic As Control = sender
cpen.LineJoin = Drawing2D.LineJoin.Round
pa = pic.CreateGraphics
pa.DrawLine(cpen, xy1, xy2)
xy1 = xy2
cpen.Dispose()
pa.Dispose()
End If
End Sub
Private Sub pictruebox_Mouseup(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)handles pictruebox1.mouseup
ismousedown = False
End Sub


用这个方法绘制的线条会在重绘窗体时被抹掉,在vb6里是设置autoredraw=true,但在vb2005里没这个属性了,应该如何实现?msdn里说在paint事件里可以自动重绘图形,但是我的pictruebox_mousemove里这段代码放到pictruebox_paint事件里就没法画线条了吧,请大家帮忙看一下,是不是有很简单的方法我不知道

[解决办法]
http://blog.csdn.net/wzuomin/archive/2006/12/13/1441007.aspx
[解决办法]
新建pic1时没有事件委托
Me.Controls.Add(pic1)
pic1.Dock = DockStyle.Fill
pic1.BackColor = Color.White后面加上
AddHandler pic1.MouseDown, AddressOf pic1_mousedown
AddHandler pic1.MouseMove, AddressOf pic1_mousemove
AddHandler pic1.MouseUp, AddressOf pic1_mouseup

读书人网 >VB Dotnet

热点推荐