当前位置:编程学习 > C#/ASP.NET >>

GDI+绘制3万个点,怎么绘制比较有效率?

GDI+绘制,3万个点,我都计算出来了x,y坐标。
但是怎么样把这些坐标绘制成点,比较有效率?对于绘制耗时的问题,我一直不太会。

我的方法
点用矩形替代,比如要一个2*2的点,就绘制个2*2的矩形
建立一个Rectangle的list,计算坐标,每计算好一个坐标后,建立对应的矩形,存入list。
计算完成后,把list转成数组
用Graphics.DrawRectangles一次性把所有矩形绘制出来。

别人给了我一个方法,但是他是vc执行的,他是每计算一个坐标后,就画一根线,相当于Graphics.DrawLine画一个2长度的线,线宽2.不过我觉得这个执行3万次画线,应该比一次性画数组要慢吧。

还有一个方法是,
内存里建一个2*2的位图,计算到每个坐标时,DrawImage,把位图画上去

请问下,
以上3个方式,哪个执行效率最好?
GDI+对于要绘制量比较大的点时,有没有什么好的处理方式? --------------------编程问答-------------------- 根据图像坐标,画出外边界,然后填充颜色 --------------------编程问答-------------------- 用DrawRectangles怎么绘制都没有效率。

如果只是点,知道坐标,不会直接修改位图值。 --------------------编程问答-------------------- 用C#指针操作。 --------------------编程问答--------------------
引用 1 楼 shawn_yang 的回复:
根据图像坐标,画出外边界,然后填充颜色

我没太看明白大概什么意思 --------------------编程问答--------------------
引用 2 楼 laviewpbt 的回复:
用DrawRectangles怎么绘制都没有效率。

如果只是点,知道坐标,不会直接修改位图值。

你是说用指针修改 计算坐标在位图中的对应点的像素的rgb值? --------------------编程问答-------------------- 是的。 那样3万个根本不算什么 。 --------------------编程问答-------------------- 在winform中吗
直接绘制30000个点肯定会使界面卡死   另开线程计算绘制出位图  在ui线程中将位图绘制在界面中 --------------------编程问答--------------------
引用 7 楼 xiaozhi_5638 的回复:
在winform中吗
直接绘制30000个点肯定会使界面卡死   另开线程计算绘制出位图  在ui线程中将位图绘制在界面中

是打印中 --------------------编程问答-------------------- 就帖子提到的那3个方式来说,哪一种方式的效率好一点? --------------------编程问答-------------------- 对了,我用fillrectangles函数绘制的话,碰到一个奇怪的现象,打印出来的画面是正常的,但是打印预览窗口中看见的内容不正常,看不见fillrectangles的内容。 --------------------编程问答--------------------
引用 9 楼 txfast 的回复:
就帖子提到的那3个方式来说,哪一种方式的效率好一点?

直接操作指针改bitmap的颜色效率最高。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,