有人能给我讲一个delphi中bytearray和tbitmap的scanline[]属性的意义吗?谢谢(在线等)(10分)

  • 主题发起人 主题发起人 dibrave
  • 开始时间 开始时间
D

dibrave

Unregistered / Unconfirmed
GUEST, unregistred user!
我的分不多,问题却不少,请原谅!
 
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;


 
谢谢你这么详细的回答。
 
顺便问一下,里面的这句P[x] := y;是什么用啊?
 
在這個例子程序中,P[x] := y其實就是改變這一點的顏色
這個例子程序將圖片的每一行的顏色改成他的高(y)的值(顏色也是long值)
最后可以看到一個自上至下的漸變效果
 
哦,谢谢!

对了,看你的字体,好象不是大陆的?
 
后退
顶部