Chinaunix首页 | 论坛 | 博客
  • 博客访问: 188573
  • 博文数量: 106
  • 博客积分: 3810
  • 博客等级: 中校
  • 技术积分: 1007
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-18 13:35
文章分类

全部博文(106)

文章存档

2014年(17)

2011年(5)

2010年(75)

2009年(9)

我的朋友

分类:

2010-04-29 23:37:09

这几天有个项目从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


阅读(2956) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~