我有一个包含 3 个成员(位图路径、x、y)的记录数组。
我必须通过 x , y 在 Form canvas 上加载记录绘制位图的值。
我试过这段代码:
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 张图像。
- 我应该将 bitmpas 存储在内存中以供重复使用吗?
- 我应该使用用户指针来绘制图像吗?
- 或者我应该使用线程进行最快的绘制?
请告诉我样品谢谢。