首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

如何样加快picturebox的绘图速度

2013-01-28 
怎么样加快picturebox的绘图速度?系统平台是WINCE 5.0开发工具 VB.NET 2008我自定义在Picturebox上建立一

怎么样加快picturebox的绘图速度?
系统平台是WINCE 5.0
开发工具 VB.NET 2008
我自定义在Picturebox上建立一个坐标系,然后再这个坐标系上根据采集的数据绘制波形曲线如下图所示
如何样加快picturebox的绘图速度

我采集数据点大概有6000point
下面是我的程序段
其中点的计算是放在线程里的


 '放在线程里计算的
  For iCount = 0 To UBound(volArr)
            Drawpoints(iCount).X = iCount / k * 58 * 10 + Org_x
            Drawpoints(iCount).Y = Org_Y - volArr(iCount) * 31
  Next


下面是我测算绘制坐标系和波形的时间

 lbl_Xyplot.Text = CStr(Environment.TickCount - starttime)   '绘制坐标轴耗时 显示43ms
  If Not volArr Is Nothing Then
      linepen.Width = 2
      linepen.Color = Color.Green
      xyplot.DrawLines(linepen, Drawpoints) '绘制波形
      lbl_WAVE.Text = CStr(Environment.TickCount - starttime) '显示波形耗时 显示5183ms
      volArr = Nothing
       RecDataArr = Nothing
   End If


绘制坐标系耗时了43毫秒,绘制波形应该是耗时(5183-43)毫秒,这个时间太漫长,我该怎么样加快这个绘图速度呢

xyplot是我在PicturBox里面生成的一个对象如下面所示

 'PictureBox重绘过程
 Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As       System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint

        xyplot = e.Graphics  '生成XYplot
        DrawXYPlotCanvas()
  End Sub



[解决办法]
你这是多少时间采集多少数据啊?

没弄过绘图速度的优化,不过你有必要6000点都画吗?分辨率这么高,人眼其实是根本看不出来的,我觉得画1/10就差不多了吧,600个点生成的曲线跟你这个看起来
应该没太大区别。  

[解决办法]
如果你能确定耗时主要是在绘图操作而不是点坐标计算上的话,那么不要直接使用picturebox的Graphics而是建一个bitmap,用它的Graphics把点全部绘制完再picturebox.image=bitmap
[解决办法]
引用:
你这是多少时间采集多少数据啊?

没弄过绘图速度的优化,不过你有必要6000点都画吗?分辨率这么高,人眼其实是根本看不出来的,我觉得画1/10就差不多了吧,600个点生成的曲线跟你这个看起来
应该没太大区别。


同意!

“抽稀”是一个可编程的技术,不需要“看起来”。当两个点的距离小于2的时候,你其实就没有必要画第二个点,直接跳过去就可以了。因此一个6000点的曲线,也许画3000点、也许画1000点,也许画500点,反正不是6000点!
[解决办法]
引用:
没用过bitmap,比如我想在bitmap上绘制一条直线,怎么写呢

不要掉到“沟里”去了。
[解决办法]
640*480像素:一屏画300个点就足够了。

热点排行