rou*_*uge 4 delphi alpha-transparency graphics32
我有一个png我想在TBitmap32中加载.
加载位图后,我调用:
Bitmap.DrawMode := dmTransparent;
Bitmap.OuterColor := Bitmap.PixelS[0,0];
Run Code Online (Sandbox Code Playgroud)
但是所有白色像素都是透明的.我怎么能只为png图像的透明部分做到这一点?这是我的图像,以标准方式指示图像边缘周围的Alpha透明度.
这是实际的图像:
在加载PNG图像时,似乎TBitmap32可能会丢失alpha信息.
您可以考虑使用GR32PNG库,其文档摘录如下:
...
由于读取和写入使用中间TBitmap对象,因此需要不必要的额外存储器来存储位图数据.此外,通过将数据转换为TBitmap格式和从TBitmap格式转换数据,附加信息可能会丢失或处理错误
...
要通过Graphics32本机处理PNG文件,可以使用第三方库GR32 PNG库.此库使用本机PNG格式作为中间存储.通过分配TBitmap32对象,数据可以动态地编码/解码到PNG.使用此库还可以访问存储在PNG文件中的其他信息.
可以根据您的需要更改单元的代码使用示例:
var
AlphaChannelUsed: Boolean;
begin
LoadBitmap32FromPNG(Bitmap, <your path to the PNG image>, AlphaChannelUsed);
if AlphaChannelUsed then
Bitmap.DrawMode := dmBlend
else
Bitmap.DrawMode := dmOpaque;
end;
Run Code Online (Sandbox Code Playgroud)
当Bitmap一个TBitmap32对象.
生成的图像以TImage32组件内的形式加载:

| 归档时间: |
|
| 查看次数: |
2213 次 |
| 最近记录: |