问Bitmap.ScanLine[row].(50分)

  • 主题发起人 主题发起人 Jaspers
  • 开始时间 开始时间
J

Jaspers

Unregistered / Unconfirmed
GUEST, unregistred user!
我在form中放一个image,然后我这样初始化
bitmap := TBitmap.Create();
bitmap.Width := ..
bitmap.Height := ...
Image.Picture.Graphic := bitmap;

请问
p := bitmap.scanline[y];
p[x] 是否等于 Image.Canvas.pixels[x,y] ??

TColor类型的变量是否要转化为Longint然后才能比较??

另外语句
p := bitmap.scanline[y].
因为bitmap.scanline的返回值是pointer,那么p的类型应该取什么呢?
好象array of longint 不行??
delphi7有没有PLongIntArray这个类型。

请高手不啬赐教,呈上最后50分
 
P : PByteArray;
 
p := Bitmap.scanline[y];
Inc(p, x);

这样才等价~~~

p的类型要看记录位图一个像素的数据有多大,如8位就定义为PByte,24位就定义为PRGBTriple,32位就定义为PRGBQuad,各记录类型的详细定义在Windows单元可以查到

其它的要自己定义~~~

如单色图和16色图不能直接用上面的方法实现,要用到位运算,16位图又分分两种,要分开处理
 
用数组也是可以的~~~

就是定义为^array of TRGBTriple这样~~~

http://www.csdn.net/develop/article/17/17187.shtm
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
593
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
688
import
I
I
回复
0
查看
892
import
I
后退
顶部