Dim PtStart As Point '记录绘制直线的起始点
Dim PtEnd As Point '记录绘制直线的终点
Dim ShouldDrawLine As Boolean '是否绘制直线
Private Sub Pic1_MouseDown()Sub Pic1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Pic1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
If Not ShouldDrawLine Then
PtStart = New Point(e.X, e.Y)
ShouldDrawLine = True
Else
PtEnd = New Point(e.X, e.Y)
'下面两句根据需要进行取舍
'Call DrawLine(PtStart, PtEnd) '绘制一条直线
Call DrawLines(PtStart, PtEnd) '绘制多条直线
ShouldDrawLine = False
End If
End Sub
Pic1.Refresh() '用于刷新Picturebox表面
绘图是系统内部操作的,不需要懂原理
方法就在那里,只有会用和不会用,你的代码告诉它绘制,它就会绘制.它(方法)究竟如何去绘制的并不是重点,反正它会绘制.
drawline(绘线)方法很简单,第一个参数是pen,它确定线条的颜色、宽度和样式.第第二段:第三个参数都是point类型,确定两个点的位置,绘制直线.
如果可以的话请把分给我
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
On Error Resume Next
Dim acadapp As Autodesk.AutoCAD.Interop.AcadApplication
acadapp = GetObject(vbNullString, "autoCAD.application")
Dim acaddoc As Autodesk.AutoCAD.Interop.AcadDocument
acaddoc = acadapp.ActiveDocument
Dim Ms As Autodesk.AutoCAD.Interop.Common.AcadModelSpace
Ms = acaddoc.ModelSpace
Dim acadObjectI As Autodesk.AutoCAD.Interop.Common.AcadObject
Dim Linei As Autodesk.AutoCAD.Interop.Common.AcadLine
Dim Circlei As Autodesk.AutoCAD.Interop.Common.AcadCircle
Dim Polylinei As Autodesk.AutoCAD.Interop.Common.AcadPolyline
Dim pt As Autodesk.AutoCAD.Interop.Common.AcadPoint
For Each acadObjectI In Ms
Debug.Print(acadObjectI.ObjectName)
Select Case acadObjectI.ObjectName
Case "AcDbLine"
Linei = acadObjectI
Debug.Print("X =" Linei.StartPoint(0).ToString)
Debug.Print("Y =" Linei.StartPoint(1).ToString)
Case ""
End Select
Next
① 创建一个Graphics对象实例.
绘制图形必须创建Graphics对象.如果是在窗体上绘图,要使用下列代码创建Graphics对象;
Dim MyGraphics As Graphics = Me.CreateGraphics
如果是在PictrueBox里绘图,要使用下列代码创建Graphics对象;
Dim MyGraphics As Graphics = PictureBox1.CreateGraphics
Dim RedBrush As New SolidBrush(Color.Red)
可以把所有画的线都保存在一个列表中,画的时候全部画出即可.如下:
Public?Class?Form1
Class?Line? ? ? '直线类
? ? ? ? Point1?=?p1
? ? End?Sub
? ? Public?Sub?Draw(g?As?Graphics)? ? ? '绘制方法
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))? ? ?'在直线列表中添加直线
Private?Sub?Form1_MouseMove(sender?As?Object,?e?As?MouseEventArgs)?Handles?Me.MouseMove
? ? If?e.Button?Windows.Forms.MouseButtons.Left?Then?Return?'左键未按下
? ? '鼠标拖动时改变列表最后一条直线(也即当前直线的第二个端点)
? ? Refresh()? ? ? ?'刷新窗体
'在Form的Paint事件中绘制所有直线,每次Form1重绘时都会触发Paint事件
'PS:?也可以通过重写OnPaint方法来达到类似的效果
Private?Sub?Form1_Paint(sender?As?Object,?e?As?PaintEventArgs)?Handles?Me.Paint
? ? For?Each?l?In?Lines? ? ?'遍历所有直线
? ? ? ? l.Draw(e.Graphics)? '调用绘制方法,传入的参数可以理解为画布
? ? Next
运行效果:
不用PictureBoxTest.Image属性,直接把图形绘制到PictureBoxTest上面就可以了.
Dim?button?As?Integer?=?0
Private?Sub?Button1_Click(ByVal?sender?As?Object,?ByVal?e?As?EventArgs)?_
Handles?Button1.Click
Using?g?As?Graphics?=?Graphics.FromHwnd(PictureBoxTest.Handle)
Dim?penRed?As?Pen?=?New?Pen(Color.Red,?1)??'定义红色画笔?
Dim?penblue?As?Pen?=?New?Pen(Color.Blue,?1)?'定义蓝色画笔?
If?button?=?0?Then
g.DrawLine(penRed,?0,?0,?100,?100)
button?=?1
ElseIf?button?=?1?Then
button?=?0
End?If
End?Using
以上就是土嘎嘎小编为大家整理的关于vb.net选择矢量直线的信息相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!