Image变大以后,为什么调用FillRect却还是原来的大小???(50分)

  • 主题发起人 主题发起人 还是朋友
  • 开始时间 开始时间

还是朋友

Unregistered / Unconfirmed
GUEST, unregistred user!
初始时Image的大小为200, 200, 用红色填满Image。

点击按钮,Image大小变为600, 600, 而这时用
Image.Canvas.FillRect(Rect(0,0,Image.Width, Image.Height));
填的区域却还是原来的大小???为什么???

而把Image的stretch设为true,就可以了。
但我的程序中不能设为ture呀,因为那样,图像就变形了?

有其它的解决办法吗???
源码如下:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Image: TImage;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
Image.Width := 200;
Image.Height := 200;
Image.Canvas.Brush.Color := clRed;
Image.Canvas.FillRect(Rect(0,0,Image.Width, Image.Height));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Image.Width := 600;
Image.Height := 600;

Image.Canvas.Brush.Color := clBlack;
Image.Canvas.FillRect(Rect(0,0,Image.Width, Image.Height));
end;

end.
 
象这样:
Image.Width := 600;
Image.Height := 600;
Image.Picture.Graphic.Width := Image.Width;
Image.Picture.Graphic.Height := Image.Height;
Image.Canvas.Brush.Color := clBlack;
Image.Canvas.FillRect(Rect(0,0,Image.Width, Image.Height));
就可以了
 
刷新一下也行
procedure TForm1.Button1Click(Sender: TObject);
begin
Image.Width := 600;
Image.Height := 600;
self.Invalidate;
Image.Canvas.Brush.Color := clBlack;
Image.Canvas.FillRect(Rect(0,0,Image.Width, Image.Height));
end;
 
DoubleWood,的办法可以。。谢谢。。

影子的办法不行,我试了。
 
接受答案了.
 

Similar threads

S
回复
0
查看
848
SUNSTONE的Delphi笔记
S
I
回复
0
查看
798
import
I
I
回复
0
查看
695
import
I
I
回复
0
查看
587
import
I
后退
顶部