TBitmap加载PNG然后画到其他画布上的透明问题

时间:2022-09-30 14:41:47
如下流程:

加载PNG -> 画到Bitmap1.Canvas -> Bitmap1 画到窗体Canvas上

请问如何在这个过程中保持PNG的透明?

因项目流程限制,不能把PNG直接画到窗体上,也不能使用GpBitmap之类,我目前只是用TPngObject加载PNG

9 个解决方案

#1


不用Canvas 画,建个画刷就可以了呀。TGpImage里面有演示源码。

#2


不能用TGpImage哦

#3


画到Bitmap1.Canvas 时就只有一层图了,无解。。。
要从PNG到BITMAP时入手

#4


bitmap1.transpartnecolor:=.....

#5


回3楼:
  这么说不用高级点的GDI+之类的技术无解了是么?

回4楼:
  这个设定没用
  TBitmap默认的透明色是左下角颜色,不设置TranslateColor也好,手动设置也好,转过来的PNG都透不了明……

用PNG的主要原因是BMP体积太大了……

#6


为什么非得不用GDI+呢?

#7


32位BitMap的话有透明通道.
Tbitmap.transpartnecolor也可以指定透明色

#8


转成BMP,Tbitmap设置透明就可以了。

#9


我已经解决了。找来PNGImage的帮助看了下,原来很简单
Bitmap.Assign(Png) 
不用Draw,直接Assign就行了,可能它在这个过程中作了转化

时间忙,没顾得上研究这个东西。感谢各位回复,来者有分。

#1


不用Canvas 画,建个画刷就可以了呀。TGpImage里面有演示源码。

#2


不能用TGpImage哦

#3


画到Bitmap1.Canvas 时就只有一层图了,无解。。。
要从PNG到BITMAP时入手

#4


bitmap1.transpartnecolor:=.....

#5


回3楼:
  这么说不用高级点的GDI+之类的技术无解了是么?

回4楼:
  这个设定没用
  TBitmap默认的透明色是左下角颜色,不设置TranslateColor也好,手动设置也好,转过来的PNG都透不了明……

用PNG的主要原因是BMP体积太大了……

#6


为什么非得不用GDI+呢?

#7


32位BitMap的话有透明通道.
Tbitmap.transpartnecolor也可以指定透明色

#8


转成BMP,Tbitmap设置透明就可以了。

#9


我已经解决了。找来PNGImage的帮助看了下,原来很简单
Bitmap.Assign(Png) 
不用Draw,直接Assign就行了,可能它在这个过程中作了转化

时间忙,没顾得上研究这个东西。感谢各位回复,来者有分。