大佬教程收集整理的这篇文章主要介绍了VB.NET 在PictureBox 上绘制多条线而不删除以前的更改,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在 VB.NET PictureBox
上绘制多条线而不删除之前的更改。如果我尝试在不同时间使用 PictureBox
在 e.graphics
上绘制两条线,那么它会删除之前的线/更改。
我在 PictureBox
的 paint
事件中使用此代码。
Public Class Drawline
Dim point1X As Integer = 10
Dim point1Y As Integer = 10
Dim point2X As Integer = 50
Dim point2Y As Integer = 50
Private Sub PictureBox1_Paint(sender As Object,e As PaintEventArgs) Handles PictureBox1.Paint
Dim pt As New Point(point1X,point1Y)
Dim pt1 As New Point(point2X,point2Y)
e.Graphics.Drawline(Pens.Green,pt,pt1)
End Sub
End Class
此示例完美地在 PictureBox
内绘制了一条绿线。
但是,当我有一个按钮在表单已经绘制后在 PictureBox
上绘制另一条线时,之前绘制的线消失了。
例如,如果我有一个像这样绘制另一条线的函数
Private Function DrawAnotherline(xPos1 As Integer,yPos1 As Integer,xPos2 As Integer,yPos2 As Integer)
point1X = xPos1
point1Y = yPos1
point2X = xPos2
point2Y = yPos2
PictureBox1.InvalIDate()
End Function
它删除绘制的第一条线,只绘制第二条线。我希望它在第一行的顶部绘制第二行而不只是删除第一行,我该怎么做?
(注意:我不能在函数中包含绘制第一条线,因为此函数将在已绘制的线之上多次使用)。
GDI+ 绘图非常简单:
Paint
事件。Invalidate
。如果您希望能够绘制多条线,那么您首先需要一个表示单条线的数据结构,然后在某处存储该数据结构的多个实例。最明显的方法是定义一个包含单行数据的类或结构,例如
Public Class Line
Public ReadOnly Property StartPoint as Point
Public ReadOnly Property EndPoint as Point
Public Sub New(startPoint as Point,endPoint as Point)
Me.StartPoint = startPoint
Me.EndPoint = endPoint
End Sub
End Class
然后声明一个引用该类型集合的字段:
Private lines As New List(Of LinE)
您的 Paint
事件处理程序然后绘制集合中的所有线条:
Private Sub PictureBox1_Paint(sender As Object,e As PaintEventArgs) Handles PictureBox1.Paint
For Each line In lines
e.Graphics.DrawLine(Pens.black,line.StartPoint,line.EndPoint)
Next
End Sub
要画一条新线,请向集合中添加一个新的 Line
对象和 Invalidate
控件:
Private Sub AddNewLine(startPoint as Point,endPoint as Point)
lines.Add(New Line(startPoint,endPoint))
PictureBox1.Invalidate()
End Sub
如何获得这些积分取决于您。您可以在 @H_180_3@mouseDown 事件中记录位置,然后在 AddNewLine
事件中调用 @H_180_3@mouseUp,或者您可以完全做其他事情。
最好在调用 Invalidate
时指定尽可能小的区域,但这超出了本问题的范围。
以上是大佬教程为你收集整理的VB.NET 在PictureBox 上绘制多条线而不删除以前的更改全部内容,希望文章能够帮你解决VB.NET 在PictureBox 上绘制多条线而不删除以前的更改所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。