下面的语句要执行多长时间?

cankoo 2011-07-08 03:10:08
procedure TForm4.Timer3Timer(Sender: TObject);
var
x,y,j,i : integer;
begin
Image1.Picture.Assign(Bmp);
Image1.Canvas.Font.Size := 120;
Image1.Canvas.Font.Color := clSkyBlue;
SetBkMode(Image1.Canvas.Handle, TRANSPARENT);
Image1.Canvas.TextOut(0,Round(Screen.Height/2)-100,DateTimeToStr(Now()) + ' ');
end;
感觉好卡,不知道定时器设置多少才好。
...全文
102 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tst1255 2011-07-11
  • 打赏
  • 举报
回复
1.不要使用Image1组件,它会自动维护刷新维护窗体、会造成闪烁,卡的原因很可能也是它造成的。
2.使用TPaintBox组件,无闪烁,效率高。
不用assign,改成:
PaintBox1->Canvas->Daw(0,0,Bmp);
3.把下面设字体、颜色等语句放在其它位置预先执行一次即可,无需每次都设参数。
PaintBox1->Canvas->Font->Size = 120;
PaintBox1->Canvas->Font->Color = clSkyBlue;
PaintBox1->Canvas->Brush->Style = bsClear; //文字透明,不用API 了。
4.Timer事件函数里只有下面两个语句就行:
{
PaintBox1->Canvas->Daw(0,0,Bmp);
PaintBox1->Canvas->TextOut(0,Round(Screen.Height/2)-100,DateTimeToStr(Now()) + ' ');

}
5.Timer设500ms足够了。

其它:不象Image组件,PaintBox不会在窗体需要更新时自动帮你更新图像。如果timer一直不停就没问题,如果timer停止,需要你在相应Paint事件更新图像。
勉励前行 2011-07-11
  • 打赏
  • 举报
回复
設置成1000吧,只是輸出個時間的話,每秒鐘更新一下就好了。
如果你是不停地換圖的話,可以先在 bmp 上寫好文字,然後再直接畫到 Image1 中。
缘中人 2011-07-11
  • 打赏
  • 举报
回复
设置大了就不卡了吧,
就是要优化才能提高运行效率
ccrun.com 2011-07-09
  • 打赏
  • 举报
回复
没必要每次定时器执行时都Assign一下吧,这个代码需要优化。
纯冰糖 2011-07-08
  • 打赏
  • 举报
回复
把这段代码放在按钮事件下,看执行需要多长时间再定
dwtrace2 2011-07-08
  • 打赏
  • 举报
回复
delphi的,怎么到c++ builder 论坛来了

604

社区成员

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

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