VB.NET中PictureBox实现类似VB6中AutoRedraw的方法

这几天有个项目从VB6转到了VB.NET,遇到了一个图片框绘图的问题.

在VB6里,只要将图片框的AutoRedraw设置为True,那么再在图片框上绘图时,这就是一个持久图象,在图象被遮挡后系统会自动重绘,省事.

而VB.NET里的图片框却没发现有这个属性....于是上网搜索,找到了一个方案,经测试可用,代码如下:

Public Class Form1
Dim bgimage As Bitmap '将这个位图对象关联到图片框的Image属性
Dim bggriphic As Graphics '以后绘图时,只需要在这个位图对象上绘制即可,图片框会自动重绘的

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
bgimage = New Bitmap(PictureBox1.Width, PictureBox1.Height) '创建相同大小的内存位图
bggriphic = Graphics.FromImage(bgimage)

PictureBox1.Image = bgimage '让Image属性为这个内存位图
End Sub

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
Dim I As Integer, X1 As Integer, X2 As Integer, Y1 As Integer, Y2 As Integer

For I = 1 To 100000 '绘制10万条随机线段
X1 = Int(Rnd() * 784)
X2 = Int(Rnd() * 784)
Y1 = Int(Rnd() * 482)
Y2 = Int(Rnd() * 482)
bggriphic.DrawLine(Pens.Red, X1, Y1, X2, Y2)
Next

PictureBox1.Refresh()
End Sub
End Class


评论: 1 | 引用: 0 | 查看次数: 1661
唐唐
唐唐[2012-01-25 08:51 PM | 访问 http://www.rmprint.cn]
建一个按钮,按一下如何清除图片?
回复来自 admin 的评论 admin 于 2012-02-07 10:42 AM 回复
不好意思,过年+结婚,没时间上线

按钮里只需要如下两句即可:

bggriphic.Clear(PictureBox1.BackColor)
PictureBox1.Refresh()