嗯,他用了trunc(坐标x),trunc(坐标y)这种运算,看来坐标是浮点数,估计是做了旋转。要快一些的话,就不能用pixels[],也不需要用scanline(实际上还是需要用一次),自己定义一个指向位图数据的指针,直接读。 看你的代码,既然有了prgbtriplearray类型,估计trgbtriplearray、trgbtriple也有,那只需要再定义: type P24bitBitmapData = ^T24bitBitmapData; T24bitBitmapData = array[0..0] of trgbtriplearray; 然后: var BH: integer; P: P24bitBitmapData; // ... BH := jg.Height - 1; P := jg.ScanLine[BH]; // ... for o:=0 to 图像高度-1 do begin for i:=0 to 图像宽度-1 do begin r_jg[i] := P[trunc(坐标x),BH - trunc(坐标y)]; end; // ...
看你的代码,既然有了prgbtriplearray类型,估计trgbtriplearray、trgbtriple也有,那只需要再定义:
type
P24bitBitmapData = ^T24bitBitmapData;
T24bitBitmapData = array[0..0] of trgbtriplearray;
然后:
var
BH: integer;
P: P24bitBitmapData;
// ...
BH := jg.Height - 1;
P := jg.ScanLine[BH];
// ...
for o:=0 to 图像高度-1 do
begin
for i:=0 to 图像宽度-1 do
begin
r_jg[i] := P[trunc(坐标x),BH - trunc(坐标y)];
end;
// ...