首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

利用GDI+ 在TIMAGE控件中 显示PNG图像的有关问题

2012-03-30 
利用GDI+ 在TIMAGE控件中 显示PNG图像的问题1、从文件中读取一个带alpha通道的png图片,2、当将图片画到TIMAG

利用GDI+ 在TIMAGE控件中 显示PNG图像的问题
1、从文件中读取一个带alpha通道的png图片,
2、当将图片画到TIMAGE中的时候,png图片的alpha通道没有了,背景为白色

代码如下:
 String filePath = ExtractFilePath(ParamStr(0)) + "login\\sys_button_close.png";
 Gdiplus::Bitmap *bmp = Gdiplus::Bitmap::FromFile(filePath.w_str(),true);
 Gdiplus::Graphics *gp = new Gdiplus::Graphics(this->Image1->Canvas->Handle);
 gp->DrawImage(bmp,0,0);

效果如下:
   

初始的时候 窗体上有一个TIMAGE控件 窗口背景是一副图片,TIMAGE控件透明

 



 

当程序运行到

 Gdiplus::Graphics *gp = new Gdiplus::Graphics(this->Image1->Canvas->Handle);
TIMAGE控件背景变为白色




当程序运行到 

 gp->DrawImage(bmp,0,0);

效果如下:






请大侠们帮忙看下是怎么个问题呢。。。。

如图片看不到,请访问
http://hi.baidu.com/wkcs520/blog/item/14f63f4e2a06b5d1d0c86a54.html

多谢了!!

[解决办法]
参考这里:
http://ccrun.com/article.asp?i=643&d=n5u8o4

代码我就不贴了
[解决办法]
还有一点,利用imag控件来画png,你测试后会发现,边上不是太整齐,你不如直接在窗体上画,

C/C++ code
HDC pDC =GetDC(Handle);Gdiplus::Graphics *gp = new Gdiplus::Graphics( pDC  ); gp->DrawImage(img,0,0); ReleaseDC(Handle, pDC); 

热点排行