画图速度慢,怎么再提高???

SydPink 2007-06-14 09:32:44
我现在程序里用的是GDI+,但是 GDI也有同样的问题,使用内存兼容位图绘制然后贴出来还是不够快。能做的剪裁优化都已经做过了。还是不行,和OFFICE 的VISIO 等工具的绘制速度根本没的比。已经没招了,哪位兄弟再这方面比较熟悉的,给点提示,还能利用什么手段提高绘制速度。
另外补充一点,绘制的是矢量图形,支持缩放,坐标影射模式用的MM_ANISOTROPIC
不熟悉DX 和OPENGL,想来在支持打印和矢量图的绘制上不能使用DX吧???
各位给点意见。。。。
...全文
1309 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
appxe2 2012-04-14
  • 打赏
  • 举报
回复
2007 年的铁
NoMore 2012-04-14
  • 打赏
  • 举报
回复
双缓冲绘图,创建一个兼容的句柄HDC,在句柄HDC上画图,然后复制到显示的窗口句柄上。速度可以
NoMore 2012-04-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
另外问下大家,大家都用什么方法来画背景网格的?我就用 点线笔,TGPGraphcs.DrawLine();这方法画背景网格好慢好慢!!!!!!!!!!
[/Quote]

用双缓冲HDC,
DC:HDC;
...
MovetoEX(DC,x,y,nil);
Lineto(DC,X1,Y1);
画网格线很快的。你试试。
山东蓝鸟贵薪 2012-04-14
  • 打赏
  • 举报
回复
画图我也在学习中......
山东蓝鸟贵薪 2012-04-03
  • 打赏
  • 举报
回复
画图应该有第三方控件的
楼主找找吧
NoMore 2012-04-01
  • 打赏
  • 举报
回复
我用delphi的image控件画图,采用双缓冲画图,速度还是很慢的,都不知道怎么解决了.
有没有人自己写过TGraphiControl的画图控件呀?可以给我一份吗?邮箱地址closemyeyes@126.com
ERR0RC0DE 2008-03-01
  • 打赏
  • 举报
回复
DrawLine调用的多,画的多,速度就慢了
我记得我以前也遇到过,后面直接用内存操作方法,直接置内存COLOR值,这样速度就快了。

代码大概原理是这样:

procedure DrawLine(Image: TGPBitmap; X, Y, Width, Height: Integer; Color: ARGB);
var
I, J: Integer;
P: ^ARGB;
SrcBD, DstBD: TBitmapData;
begin
Image.LockBits(MakeRect(X, Y, Widht, Height), PixelFormat32bppPARGB, SrcBD);
for I := 0 Width - 1 do
begin
P := SrcBD.Scan0 + I * SrcBD.Stride;
for J := 0 to Height - 1 do
begin
P^ := Color;
Inc(P);
end;
end;
Image.UnlockBits(SrcBD);
end;

大概是这样,有些忘了。
MooseWOler 2008-02-29
  • 打赏
  • 举报
回复
24楼,同感
hapland 2008-02-23
  • 打赏
  • 举报
回复
与DXF有关的可以使用DXF控件,大富翁和盒子上好像都有的
那个控件是免费的,而且速度很快,
一个英国人80年代后期完成的,应该没有用到DX技术吧。
syc_cs 2008-02-21
  • 打赏
  • 举报
回复
UP UP
狂接分!!!!!!!
Rex_love_Burger 2008-02-21
  • 打赏
  • 举报
回复
先在内存画,画完后BitBlt拷贝到屏幕
baihui8 2008-02-18
  • 打赏
  • 举报
回复
我有一个绘图程序,有源码,要的和我联系(QQ:5406639)
sanguomi 2008-02-18
  • 打赏
  • 举报
回复
绘图做得少,也来学习一下了.
steden 2008-02-18
  • 打赏
  • 举报
回复
GDI绘图想快必须建立内存位图缓冲, 而且不能用pixcel那些来访问位图缓冲,要用scanline这类.
然后在某个订立的周期内进行写屏幕,用类似assign之类手法交换屏幕上图片.我曾用此方法制作2D小游戏,效果还蛮流畅
AP 2008-02-15
  • 打赏
  • 举报
回复
TGPGraphics 等图形 对象要尽可能少创建 多共用 可极大提高显示速度[创建内存中的显示对象是必须的]
显示上万个对象也很快
hmzgz81 2008-02-14
  • 打赏
  • 举报
回复
学习
goodmrning 2008-01-04
  • 打赏
  • 举报
回复
学习并接分!
帮楼主顶下!!!!!!!!!!!!!!!!!!
fhb 2007-11-07
  • 打赏
  • 举报
回复
您也可以使用TCAD组件。
http://www.codeidea.com/cn/
etomahawk 2007-10-24
  • 打赏
  • 举报
回复
我刚写了一个简单的矢量图像编辑器,使用的是内存换取速度的解决方法。
整个可视的部分使用一个TBitmap缓存。给每个图形对象都缓存一个TBitmap,改变大小后重新绘制一次,然后,使用Bitblt绘制到内存中的TBitmap中,再用Bitblt绘制到显示DC上。这样,只有一个图像在改变的时候,才去重新绘制它,就减少了很多绘制。
oushengfen 2007-10-24
  • 打赏
  • 举报
回复
我同学也做一个绘图软件,速度总是跟不上去,画面总是出现闪动的现象,是不是一定要使用OpenGL或者D3D库才能高效画出不速度很快,且效果很好的动态图形来.
加载更多回复(17)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧