关于使用GDI+绘制png透明图片的问题 就是说使用Graphics绘制Image之前,能否使用透明(背景色)的刷子把将要绘制的区域clear? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 wangk(倒之) 你的方法在可以解决透明的问题,但是会出现闪烁的问题。比如有个主窗体,贴了个背景图片,然后在上面有个Button,这个Button也是个窗体,而且这个Button上贴了一张透明的png图片,作为不规则按钮。按钮3个状态的图片内容有可能不一样,所以就出现了我说的那个问题。如果按着wangk(倒之) 的说法,Button每次自己重绘的时候也通知其父窗体(也就是主窗体)重绘对应区域,的确可以解决重叠的问题,但是这个时候Button会出现闪烁的问题。这也是不能接受的。 重绘不一定要让其父窗体来进行,我们自己处理就可以了。闪烁可以用双缓冲绘图的方式,即MemDc里先重绘背景,然后贴图,最后才复制到Button的Dc。 你说的方法就是我前面说得那样:如果我不直接使用Graphics 画在窗体上的dc上,而是先画到Memory DC,然后再贴到窗体dc上去,就会在图片透明的部分呈现出黑色,没有透明效果。这样就没有透明的效果。 MemDc里先重绘背景,就是后面button的背景,然后在绘出图片。 MemDc里先重绘背景,就是后面button的背景,然后在绘出图片。---------------------------------------------------------请问这里说说的背景是什么?如何绘制绘制?Button透明的地方应该看到的是主界面上的内容,所以我理解为应该是用透明的刷子刷一次,然后再在Button的窗体上贴新的png图片。 如果你主界面背景不是贴图的话,那么取其背景色刷一下即可,如果主界面背景是贴图的话就取出图的部分刷在MemDc里。 wangk(倒之):我明白你的意思了!我试试看,谢谢提示。 wangk(倒之):你的方法我刚才试了,取Parent Wnd的HDC是不行的,因为这个时候Parent Wnd的DC还保留着上个图片的信息。只能是直接取Parent Wnd背景图片的相应部分,但是这个时候如果这个时候主窗体的尺寸和BK的不一致(比如主窗体可以随意改变大小)就麻烦了,还要对图片区域进行对应的缩放才能刷。请问有没有其他的方法?谢谢! 一般性网络故障,请检查网络文档 关于精确计算字符串宽度的挑战性问题 如何十六进制数据写进文件 请教目录统计的几个函数。如何知道目录下所有文件的总数,总文件/目录的大小和某个文件的大小 如何将黑白图象还原为彩色图象 100分请教:局域网中两台计算机之间传送文件最快最可靠的方法。参与者有分!!!!!! 关于工程部署的问题 请问怎样让modem实现来电转接功能? 如何在一个chm文件加入其他chm文件的内容,像微软的MSDN一样,如解决问题我会加分的。 有关WM_KEYDOWNDE的问题 请问关于IMediaDet截图的问题? 不能添加控件变量,急~!在线等
你的方法在可以解决透明的问题,但是会出现闪烁的问题。
比如有个主窗体,贴了个背景图片,然后在上面有个Button,这个Button也是个窗体,而且这个Button上贴了一张透明的png图片,作为不规则按钮。按钮3个状态的图片内容有可能不一样,所以就出现了我说的那个问题。如果按着wangk(倒之) 的说法,Button每次自己重绘的时候也通知其父窗体(也就是主窗体)重绘对应区域,的确可以解决重叠的问题,但是这个时候Button会出现闪烁的问题。这也是不能接受的。
闪烁可以用双缓冲绘图的方式,即MemDc里先重绘背景,然后贴图,最后才复制到Button的Dc。
---------------------------------------------------------
请问这里说说的背景是什么?如何绘制绘制?Button透明的地方应该看到的是主界面上的内容,所以我理解为应该是用透明的刷子刷一次,然后再在Button的窗体上贴新的png图片。
我明白你的意思了!我试试看,谢谢提示。
你的方法我刚才试了,取Parent Wnd的HDC是不行的,因为这个时候Parent Wnd的DC还保留着上个图片的信息。只能是直接取Parent Wnd背景图片的相应部分,但是这个时候如果这个时候主窗体的尺寸和BK的不一致(比如主窗体可以随意改变大小)就麻烦了,还要对图片区域进行对应的缩放才能刷。请问有没有其他的方法?
谢谢!