控件移动问题?(50分)

  • 主题发起人 主题发起人 Zangwill
  • 开始时间 开始时间
Z

Zangwill

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI控件如LABEL在IMAGE上移动时会有明显的轨迹,刷新速度不如人意,请问有何办法改进?
 
用Api函数吧
1。文字移动用TextOut??OutText(有点记不清了),再用Bitblt拷贝回去
2.图像移动用Bitblt函数,做两个位图,一为掩码,二为图像,做异或操作
 
用双缓冲技术,详细见另一帖子"怎样使控件重画时不抖动"
 
不要使用控件移动得方法!可以在Image上话,先把文字覆盖得一部分图象保存下来,
花文字,然后恢复图象!...
 
可以考虑用虚框代替实际图象的移动,到达目的地后再PAINT
 
TForm1 = class(TForm)
...
Image1: TImage;
...
private
...
baseBmp: TBitmap;
procedure moveLabel;
...
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
baseBmp := TBitmap.Create;
baseBmp.Assign(Image1.Picture.Bitmap);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
baseBmp.Free;
end;

procedure TForm1.MoveLabel;
const
x: integer = 0;
y: integer = 0;
begin
Image1.Picture.Bitmap := baseBmp;
Inc(x, 2);
Inc(y, 2);
Image1.Canvas.TextOut(x, y, 'your Label Text');
end;
end;

 
在CANVAS上画不行吗?
 
To CJ:
在CANVAS上画,文字移动后,怎么样再搽去上次的文本输出呢?
所以先把北京保存起来,以后好恢复.
 
北京 - 背景
 
Zangwill:

这个问题已经很长时间没有人参加讨论,为保持版面
整洁,节约网友时间,请提问者采取必要处理措施。
关于图形图象版管理细则,请参见<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=111927">这个</a>问题。如两天
内提问者没有响应,我将采取强制措施。

如有管理建议,请到<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=111927">这里</a>提出。谢谢!
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
923
DelphiTeacher的专栏
D
D
回复
0
查看
715
DelphiTeacher的专栏
D
后退
顶部