有关ScanLine(50分)

  • 主题发起人 主题发起人 Nstar
  • 开始时间 开始时间
N

Nstar

Unregistered / Unconfirmed
GUEST, unregistred user!
能解释一下Delphi自带的例子吗?
我不知道变量P在其中的作用
我的简单理解:
Bitbmp读入图像后,经过scanline后,P中就有值了,
但在后面好像与P没有关系了??

procedure TForm1.Button1Click(Sender: TObject);
var
x,y : Integer;
BitMap : TBitMap;
P : PByteArray;
begin
BitMap := TBitMap.create;
try
BitMap.LoadFromFile('C:/Documents and Settings/zcm/My Documents/My Pictures/mt097_1.bmp');
BitMap.width:=200;
BitMap.Height:=345;
Bitmap.PixelFormat:= pf24bit;
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;
end;
 
位图对象中的图像数据就在一块内存中保存
逐条扫描线进行排列
第一条扫描线排在最后面,最后一条扫描线排在开头
所以最后一条扫描线的数据的指针就是整个位图数据的首指针
p只是个指针,指向每条扫描线数据的开始位置
 
LiChaoHui说得有道理,关于scanline,论坛有很多例子说明
 
多人接受答案了。
 

Similar threads

W
回复
10
查看
388
whether_bobo
W
T
回复
4
查看
153
true_feiyun
T
A
回复
3
查看
167
ayu310
A
后退
顶部