来讨论一下关于画图的效率问题...(300分)

  • 主题发起人 主题发起人 emildy
  • 开始时间 开始时间
E

emildy

Unregistered / Unconfirmed
GUEST, unregistred user!
我想知道,有什么方法,可以提高Graphics的画图速度(效率)??
如:我要在一个Graphics中画10000条直线,即无论如何要调用10000次drawLine()方法,这是无法优化的吗?
即如下代码:
public void mypaint(Graphics g){
for(int i=0;
i<10000;
i++){
...
g.drawLine(x1,y1,x2,y2);
...
}
}
我计算了一下以上代码的运行时间,竟然需要0.2秒(机器配置属于中等偏上)...
这个时间对我来说太长了!有什么办法可以缩减吗?
 
换台好机器,:)
 
to: simbasun
好办法,但不是我想要的答案!
 
那你就不画这么多啊,比如说,10条?
 
你要画的直线彼此有联系么??
如果有,你完全可以用画填充多边形的方法来绘制。
Canvas.Polygon(***);
毕竟相互有关联的直线最终会组合成多边形!
 
试过 DirectDraw 吗?应该试一下,如果这个还不能满足你,可能就需
要 OpenGL 之类的东西配合好的显卡来实现了。
 
to 卷起千堆雪tyn:
我画10000条直线,只是做个例子,事实上,我是要画一个复杂的精确的图形,
所有的直线应该是一条一条画,没有办法用曲线,或者多边形方法来取代...
 
to x.45:
DirectDraw???是游戏编程吗?我不是很了解,告诉我详细一点吧...
 
如果是这样,建议学习 Auto Lisp 语言,在 AutoCAD 中实现,这样才能以最小的代价(劳动力)保证精度和效率。
 
如果说道精度的话,DirectDraw 显然达不到要求,你都说了,用来做游戏的 :)
OpenGL 是可能的,不过它是针对三维的。 :(
Auto Lisp 其实是最专业的解决方案,当然,要嵌入你的程序的话,目前好像必须要懂 VB :(
而且用户的计算机里必须安装 AutoCAD
 
ddraw 可以。做游戏的东东不能说明不精确。绘制直线的时候有相当的时间用来
做基于逆波兰表示法的图像结合操作,这是比较浪费的。ddraw 不需要这个操作,
性能有比较大的提高。
 
to mikedeakins , x.45:
刚查了一些资料,我觉得用ddraw就可以了,
而且,我发现,vj里就有directX类...但不会用,相关资料也少得可怜...:~~(
请问有谁帮我找一下这方面的资料,或者是程序示例...先谢了
 
用 vj++ 和 directx 做游戏???这个难度太大了。听高人怎么说……
 
用DelphiX控件吧!
它实际上是将DirectX 的API封装成了控件。
 
BufferedImage 或是 MemoryImageSource 实现内存换冲
 
多人接受答案了。
 
后退
顶部