62库

您现在的位置是:首页 > 前端开发 > JavaScript > 正文

JavaScript

vb.net添加直线的简单介绍

Admin2023-11-11JavaScript61

VB.Net中画直线问题

不想整个重画,最好用单色的背景,例如黑色,线条是白色的

用变量把线条的内容备份

当想改变线条的位置或者长度之前,先用存下来的变量以黑色重画一次,覆盖原来的白色线条

然后再画新的白色线条,这种重画方法比较节省资源

假如需要用花哨的背景或者图片当背景,也可以用局部重回的方式。

代码就不提供了,只提供思路。

vb.net 画线再画保留以前画得

可以把所有画的线都保存在一个列表中,画的时候全部画出即可。如下:

Public Class Form1

  Class Line      '直线类

      Public Point1, Point2 As Point     '成员,直线的两个端点

      Sub New(p1 As Point, p2 As Point)   '构造方法

          Point1 = p1

          Point2 = p2

      End Sub

      Public Sub Draw(g As Graphics)      '绘制方法

          g.DrawLine(Pens.Black, Point1, Point2)

      End Sub

  End Class

  Private Lines As New List(Of Line)      '列表用于保存所有画下的直线

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

      BackColor = Color.White

      DoubleBuffered = True       '开启双缓冲可有效避免闪烁

  End Sub

  Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown

      Lines.Add(New Line(e.Location, e.Location))     '在直线列表中添加直线

  End Sub

  Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove

      If e.Button  Windows.Forms.MouseButtons.Left Then Return '左键未按下

      '鼠标拖动时改变列表最后一条直线(也即当前直线的第二个端点)

      Lines(Lines.Count - 1).Point2 = e.Location

      Refresh()       '刷新窗体

  End Sub

  '在Form的Paint事件中绘制所有直线,每次Form1重绘时都会触发Paint事件

  'PS: 也可以通过重写OnPaint方法来达到类似的效果

  Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint

      e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias    '开启抗锯齿

      For Each l In Lines     '遍历所有直线

          l.Draw(e.Graphics)  '调用绘制方法,传入的参数可以理解为画布

      Next

  End Sub

End Class

运行效果:

vb和vb.net 在picturebox 中绘制直线如何绘制

绘图是系统内部操作的,不需要懂原理

方法就在那里,只有会用和不会用,你的代码告诉它绘制,它就会绘制。它(方法)究竟如何去绘制的并不是重点,反正它会绘制。

drawline(绘线)方法很简单,第一个参数是pen,它确定线条的颜色、宽度和样式。第二、第三个参数都是point类型,确定两个点的位置,绘制直线。

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~