关于CANVAS作为参数传递的问题

MMas 2008-05-29 08:02:47
PROCEDURE(ACANVAS:TCANVAS;...)
当把IMAGE.CANVAS传进去画图时,程序生成了一份CANVAS的COPY,这样使得程序CPU占用率和CPU时间占用都很高,但在IMAGE的ONMOUSEMOVE里作画同样的图,资源占用量低很多很多,如何把CANVAS作为引用传递呢?
PROCEDURE(VAR ACANVAS:TCANVA;...)这样的定义不能通过,因为CANVAS是CONST对象;

另外,当我在一个TBITMAP对象画好图后,再
bitblt(Image1.Canvas.Handle,0,0,Bmp.Width-1,Bmp.Height-1,Bmp.Canvas.Handle,0,0,SRCCOPY);
这样快速处理时,画面闪得好厉害,只能打开FORM的DOUBLEBUFFER才不闪,我的处理不是双缓存吗?
...全文
198 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rex_love_Burger 2008-06-12
  • 打赏
  • 举报
回复
楼上正解
  • 打赏
  • 举报
回复
Delphi中的对象使用引用模型,赋值和作为参数传递都是传一个指针而已,想要它复制还要使用assign方法才行。
“程序CPU占用率和CPU时间占用都很高”那是你的程序有问题,不是Canvas被复制造成的。
大大怪老张 2008-05-29
  • 打赏
  • 举报
回复
你开了 DoubleBuffer 就是了。

1,184

社区成员

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

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