我有一个包含3个成员的记录数组(位图路径,x,y)。
我必须在表格画布上用x,y。
加载记录绘制位图中的值我尝试使用此代码:
const
MAXX = 40 ;
type
ImgObj = record
Addrs : string;
X: Integer ;
Y: Integer ;
end;
var
All : array[1..MAXX] of ImgObj ;
procedure TForm1.btn1Click(Sender: TObject);
var
BuffBitmap :TBitmap ;
I,j,k: Integer;
begin
// set all bit maps
....
// draw 40 images
BuffBitmap := TBitmap.Create ;
for I := 1 to MAXX do
begin
BuffBitmap.LoadFromFile(All[i].Addrs);
for j := 0 to BuffBitmap.Width-1 do
for k := 0 to BuffBitmap.Height-1 do
begin
Self.Canvas.Pixels[All[i].X+j,All[i].Y+k] := BuffBitmap.Canvas.Pixels[j,k] ;
end;
end;
BuffBitmap.free;
end;
这段代码很好地吸引了他们,但是很长一段时间大约8秒。 我必须在我的应用程序中重复此事件。
现在我如何能够以最快的方式在画布上绘制40张图像。
请告诉我样品谢谢。
答案 0 :(得分:2)
使用Draw方法:
BuffBitmap.LoadFromFile(All[i].Addrs);
Self.Canvas.Draw(All[i].X, All[i].Y, BuffBitmap);