vb.net划线刷新 vba刷新窗体

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.ButtonWindows.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.net GDI绘图刷新问题绘图代码写在Paint事件中vb.net划线刷新,如
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = Me.CreateGraphics
g.DrawLine(Pens.Red, 100, 100, 200, 100)
End Sub
'方法二vb.net划线刷新:在 PictureBox1上显示图像----图画在Bitmap
PictureBox1.Image = Nothing
Dim wid As Integer = PictureBox1.ClientSize.Width
Dim hgt As Integer = PictureBox1.ClientSize.Height
Dim bm As New Bitmap(wid, hgt)
Dim g As Graphics = Graphics.FromImage(bm)
'画图代码
'画图代码
PictureBox1.Image = bm
PictureBox1.Refresh()
g.Dispose()
vb.net程序运行后,不能实时刷新 。程序界面本身就是被windows画出来vb.net划线刷新的vb.net划线刷新 , 每次显示都要画上一遍,而每次重新画出程序,你的函数并没有因此而重新调用 , 当然图形就不见.
你可以在窗体的paint()事件里掉用函数
在VB NET中,在Form_Load中创建graphics类 , 并绘制直线 , 为什么执行程序后发现直线绘制不出来?1. 创建一个Graphics对象实例 。
绘制图形必须创建Graphics对象 。如果是在窗体上绘图,要使用下列代码创建Graphics对象;
Dim MyGraphics As Graphics = Me.CreateGraphics
如果是在PictrueBox里绘图,要使用下列代码创建Graphics对象;
Dim MyGraphics As Graphics = PictureBox1.CreateGraphics
2. 定义一个Brush对象,用来填充图形(如果你需要填充的话) 。
如果填充封闭曲线或者多边形,必须创建Brush对象(或者Brush类的继承类对象),用来确定填充的颜色 。例如下面的代码,创建了一个填充红色的画刷对象 。在最后的括号里,用Color结构指定的枚举值,确定画刷的颜色 。限于篇幅有关Color结构这里不展开,可能在后续博文里介绍 。
Dim RedBrush As New SolidBrush(Color.Red)
在vbnet中,我在picturebox里面画线 , 用滚动条拉动picturebox显示最新画出的图vb.net没有自动重画功能 , 要在Paint事件中写代码对图形重画 。
另外一种情况 , 如果在Image属性设置了一幅图像,图像能够保持完整性的 。所以你可以把图形绘在位图上,把位图绑定到Image属性上 。
先绑定一幅位图:
Dim bm as New BitMap(800,600)
PictureBox1.Image=bm
作图时不是对图片框,而是在位图上作图 。
dim gr As Grapthics=Graphics.FromImage(bm) '建立位图的绘图设备
接下来就可用gr 的绘图方法作图
作完图,PictureBox1.Refresh 刷新一下 。
vb.net的picturebox画直线的函数是哪个?vb6.0是picture1.line就可以,但是vb.net没有啊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)'绘制一条直线
【vb.net划线刷新 vba刷新窗体】Call DrawLines(PtStart, PtEnd)'绘制多条直线
ShouldDrawLine = False
End If
End If
End Sub
'绘制鼠标两次点击位置之间的直线
Private Sub DrawLine()Sub DrawLine(ByVal mPoint1 As Point, ByVal mPoint2 As Point)
Pic1.Refresh()'用于刷新Picturebox表面
Pic1.CreateGraphics.DrawLine(Pens.Blue, mPoint1, mPoint2)'绘制两点间的直线
End Sub
'绘制多条直线,每两次鼠标点击确定一条线
Private Sub DrawLines()Sub DrawLines(ByVal mPoint1 As Point, ByVal mPoint2 As Point)
'此句不可删除,用于清除鼠标点击前的轨迹
ControlPaint.DrawReversibleLine(Pic1.PointToScreen(mPoint1), Pic1.PointToScreen(mPoint2), Color.Red)
Pic1.CreateGraphics.DrawLine(Pens.Blue, mPoint1, mPoint2) '绘制两点间的直线
End Sub
关于vb.net划线刷新和vba刷新窗体的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读