Canvas的CopyRect和Draw方法哪个效率更高?

Keyser 2006-07-24 12:26:29
BCB6中:

比如我先在一个Bitmap上画图,再从Bitmap上复制到控件的Canvas上,使用下面两种方法哪种效率更高,为什么?

方法1:使用CopyRect

Image1->Canvas->CopyRect(Image1->ClientRect, bmp1->Canvas, TRect(0, 0, bmp1->Width, bmp1->Height);

方法2:使用Draw

Image1->Canvas->Draw(0, 0, dynamic_cast<TGraphic *>(bmp1));
...全文
270 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Keyser 2006-07-24
  • 打赏
  • 举报
回复
谢谢两位。结帐!
sczyq 2006-07-24
  • 打赏
  • 举报
回复
DWORD dw1 = GetTickCount();

Image1->Canvas->CopyRect(Image1->ClientRect, bmp1->Canvas, TRect(0, 0, bmp1->Width, bmp1->Height);

DWORD dw2 = GetTickCount();

Image1->Canvas->Draw(0, 0, dynamic_cast<TGraphic *>(bmp1));

DWORD dw3 = GetTickCount();


dw2-dw1 与 dw3-dw2 比较一下即可,或许会是一样的。
BlueDeepOcean 2006-07-24
  • 打赏
  • 举报
回复
我认为:Draw的速度比CopyRect的速度快。从D版的代码可以看出:

Draw所需的前提条件是:句柄可用

而CopyRect的前提条件是:句柄可用,字体可用,画刷可用
并且画布所具备的条件包括:句柄可用,画刷可用

而上述一系列条件,需要Windows进行一系列的处理。

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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