Delphi下,简单把PixelFormat设为pf24bit就可以了,但在lazarus下则不行(lazarus还有多少隐蔽的差异 )。谷歌了很多关键字,没有想要的答案,但也可以找到线索,通过LazIntfImage进行转换。
[delphi] view plaincopy 
- Procedure Bmp32ToBmp24(src: TBitmap;dest:TBitmap);
- var
- inf1,inf2:TLazIntfImage;
- ImgFormatDescription: TRawImageDescription;
- begin
- inf2:=TLazIntfImage.Create(src.Width,src.Height);
- inf1:= src.CreateIntfImage;
- try
- ImgFormatDescription.Init_BPP24_B8G8R8_BIO_TTB(src.Width,src.Height);
- inf2.DataDescription:=ImgFormatDescription;
- inf2.CopyPixels(inf1);
- dest.PixelFormat:=pf24bit;
- dest.LoadFromIntfImage(inf2);
- finally
- inf1.free;
- inf2.Free;
- end;
- end;
看了一些graphics单元的代码,感觉lazarus对图像的处理功能比delphi强大得多,但也复杂得多,其实这还不要紧,要命的是没有资料可查!!
原创博客:http://blog.csdn.net/rocklee
|