scanline就是一個byte數組,指向TBitmap的內存區域.他具體的結構與bitmap
的顏色位數有關,比如如果是256色(8位),那么每一行的的字節數與Bitmap的寬度一樣
,如為64k色(16位),則每行字節數為bitmap寬度的二倍,通過訪問他比訪問canvas的pixels
[][]要快得多的.
下面是幫助的例子原文:
var
x,y : Integer;
BitMap : TBitMap;
P : PByteArray;
begin
BitMap := TBitMap.create;
try
BitMap.LoadFromFile('MyBitmap.png');
for y := 0 to BitMap.Height -1 do
begin
P := BitMap.ScanLine[y];
for x := 0 to BitMap.Width -1 do
P[x] := y;
end;
Canvas.Draw(0,0,BitMap);
finally
BitMap.Free;
end;