我简单写了一个程序,没发现内存泄漏啊?
代码如下:
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Image1: TImage;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
imagelist: TList;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var image: Timage;
i, w, h: integer;
hdc1, hdc2: HDC;
begin
for i:=0 to imagelist.Count-1 do
begin
image:=imagelist.items;
w:= image.Picture .Bitmap.Width ;
h:=image.Picture.Bitmap.Height ;
hdc2:=image.Canvas.Handle;
hdc1:=image.Canvas.Handle ;
bitblt(hdc2,0,0,w,h,hdc1,0,0,notsrccopy);
image.repaint();
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
imagelist := TList.Create;
end;
procedure TForm1.FormShow(Sender: TObject);
var image: Timage;
I: Integer;
begin
for I := 0 to 10 - 1 do
begin
image := TImage.Create(Self);
image.Parent := Self;
image.Left := I * 50;
image.Top := 10;
image.Width := 40;
image.Height := 40;
image.AutoSize := False;
image.Stretch := True;
image.Picture.LoadFromFile('c:/1.bmp');
image.repaint();
imagelist.Add(Image);
end;
end;