超级难题:高手请进,有关 Timage控件的问题(100分)

  • 主题发起人 主题发起人 angshuangxi
  • 开始时间 开始时间
A

angshuangxi

Unregistered / Unconfirmed
GUEST, unregistred user!
在界面上加一个TImage和两个按钮
程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
fRect:TRect;
begin
Image1.Width :=100;
Image1.Height :=100;
fRect.Left :=0;
fRect.Top :=0;
fRect.Bottom :=Image1.Height
fRect.Right :=Image1.Width;
Image1.Canvas.Brush.Color :=clred;
Image1.Canvas.FillRect(fRect);

end;

procedure TForm1.Button2Click(Sender: TObject);
var
fRect:TRect;
begin
Image1.Width :=200;
Image1.Height :=200;
fRect.Left :=0;
fRect.Top :=0;
fRect.Bottom :=Image1.Height
fRect.Right :=Image1.Width;
Image1.Canvas.Brush.Color :=clBlue;
Image1.Canvas.FillRect(fRect);

end;

我期望的结果是:
点击两个按钮会分别产生两个大小不同,颜色也不同的块,看程序好象应该也是这种结果
运行结果是:如果先点Button2,则出现了我期望的结果,
可是如果先点 Button1,产生的两个块颜色虽然不同,大小却一样,
为什么,怎么解决这个问题,我跟踪了一下,发现点Image2时,控件大小其实发生了变化,可就是好象扩大的部分被截掉了,我百思不的其解,望高手救我一命



 
Button2Click过程增加一段代码,把Image1.Picture.Graphic的宽度和高度也置成200。

procedure TForm1.Button2Click(Sender: TObject);
var
fRect:TRect;
begin
Image1.Width :=200;
Image1.Height :=200;

if Image1.Picture.Graphic <> nil then
begin
Image1.Picture.Graphic.Width :=200;
Image1.Picture.Graphic.Height :=200;
end;

fRect.Left :=0;
fRect.Top :=0;
fRect.Bottom :=Image1.Height
fRect.Right :=Image1.Width;
Image1.Canvas.Brush.Color :=clBlue;
Image1.Canvas.FillRect(fRect);

end;

试一试,OK?
 
procedure TForm1.Button2Click(Sender: TObject);
var
fRect:TRect;
begin
Image1.Picture := nil
//加上这一句

Image1.Width :=200;
... ...
end;
 
呵呵,慢了7秒
 
多人接受答案了。
 
后退
顶部