GDI+中的透明按钮

listen80 2009-04-26 12:52:26
用GDI+画按钮(贴PNG图片,有透明度)时 ,在DrawItem中画的,将按钮的每种状态用不同的图片代替,能将图片贴上去。
但是当图片贴上后,仍然会显示原来(上一次)贴上的图片。
在网上找的解决方法是,刷新父窗口对应的区域。这个办法在父亲窗口没有WS_CLIPCHILDREN属性是管用的,加上WS_CLIPCHILDREN属性后问题依旧。请问如何解决?

void CPngButton::InvalidateParent(void)
{
CRect rect;
GetWindowRect(rect);
CWnd* pParent = GetParent();
if( ::IsWindow(pParent->GetSafeHwnd() ) )
{
pParent->ScreenToClient(rect);
pParent->InvalidateRect(rect);
}
}


...全文
236 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jameshooo 2009-04-28
  • 打赏
  • 举报
回复
在WM_ERASEBKGND消息里面做
listen80 2009-04-28
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jameshooo 的回复:]
如果想透明,父窗口就一定不能设置WS_CLIPCHILDREN,否则这块区域的背景都没人管了
[/Quote]
嗯,谢谢。自己再琢磨琢磨,谢谢各位的回复!
先结了
jameshooo 2009-04-28
  • 打赏
  • 举报
回复
如果想透明,父窗口就一定不能设置WS_CLIPCHILDREN,否则这块区域的背景都没人管了
listen80 2009-04-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jameshooo 的回复:]
在WM_ERASEBKGND消息里面做
[/Quote]
我在WM_ERASEBKGND的响应函数中return TRUE不管用,因为要自己擦除背景。
但是怎么让背景重新透明呢?
是把父窗口对应矩形的背景截下来,贴在背面上吗?
zhuweiping2003 2009-04-28
  • 打赏
  • 举报
回复
先UP
xghuzd 2009-04-28
  • 打赏
  • 举报
回复
处理WM_ERASEBKGND消息.
让他 Return true;
listen80 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 Allen_zhang 的回复:]
这个你需要用Layered Windows来做
需要调用一下UpdateLayeredWindow
[/Quote]
谢谢,我查查相关的东西。
listen80 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fandh 的回复:]
pParent->Invalidate();
我怀疑你求的rect不正确!
[/Quote]
如果父窗口没有WS_CLIPCHILDREN属性时,是OK的,说明rect是正确的啊
listen80 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jameshooo 的回复:]
要给你的PngButton机会来擦除背景,不然没有人帮你做这事,父窗口没有WS_CLIPCHILDREN属性时它会帮你做,有这个属性就得你自己管背景。
[/Quote]
请问,我应该在哪里对它进行控制呢?
princelive 2009-04-27
  • 打赏
  • 举报
回复
好的哈 帮你顶~~~~~
Allen_zhang 2009-04-27
  • 打赏
  • 举报
回复
这个你需要用Layered Windows来做
需要调用一下UpdateLayeredWindow
jameshooo 2009-04-27
  • 打赏
  • 举报
回复
要给你的PngButton机会来擦除背景,不然没有人帮你做这事,父窗口没有WS_CLIPCHILDREN属性时它会帮你做,有这个属性就得你自己管背景。
fandh 2009-04-27
  • 打赏
  • 举报
回复
pParent->Invalidate();
我怀疑你求的rect不正确!
yearn520 2009-04-27
  • 打赏
  • 举报
回复
不太懂什么意思,你这控件透明的下面是什么?
tian_yang_jian 2009-04-26
  • 打赏
  • 举报
回复
帮你顶一下吧

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧