PNG三态按钮

steven_geek 2013-05-21 04:26:05
从网上下载了一个PNGButton类来实现了PNG的按钮, 三种状态的图片我是放在同一个PNG文件中, 现在我的问题是:
1.鼠标停留在按钮上的时候我的图片跳起来的;
2. 当鼠标离开按钮的时候,跳起来的图片并没有檫除,这使得我正常的图片会有一部分叠影;

是不是可以每次画按钮的时候我先檫除一下以前的? 还是有其他的解决方法,谢谢
...全文
291 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-07-03
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
steven_geek 2013-05-24
  • 打赏
  • 举报
回复
我刷新按钮的父窗口是可以消除,但是会闪烁一下。
邓学彬 2013-05-24
  • 打赏
  • 举报
回复
不想闪烁,那就直接把父窗口的背景图复制到按钮DC上
参考:自绘实现半透明水晶按钮
http://bbs.csdn.net/topics/390336507
邓学彬 2013-05-23
  • 打赏
  • 举报
回复
引用 3 楼 u010445083 的回复:
滑过的时候我画的是第三个图片,但是滑过之后我要恢复到第一个图片,但是滑过之后,第一张图片的顶部仍留有第三张图片的顶部部分,而不檫除掉。
你的PNG按钮,背景是透明的吧? 状态改变后,要刷新按钮的父窗口. 参考:http://bbs.csdn.net/topics/390401008
simple_gogo 2013-05-22
  • 打赏
  • 举报
回复
引用 5 楼 u010445083 的回复:
还有一个问题, 我用Static Text来显示文字, 背景透明
if(nCtlColor == CTLCOLOR_STATIC)
	{
		pDC->SelectObject(m_fontBig);
		pDC->SetTextColor(RGB(255, 0, 0));
		pDC->SetBkMode(TRANSPARENT); //背景设为透明

		return (HBRUSH)::GetStockObject(NULL_BRUSH);
	}
这个是没有问题的, 但是我要改变Static Text的内容的时候, SetWindowText(), 却不能清除掉之前的内容,而是覆盖,前面的内容还是会存在。
在改变内容后,使用Invalidate();
Eleven 2013-05-22
  • 打赏
  • 举报
回复
引用 5 楼 u010445083 的回复:
还有一个问题, 我用Static Text来显示文字, 背景透明
if(nCtlColor == CTLCOLOR_STATIC)
	{
		pDC->SelectObject(m_fontBig);
		pDC->SetTextColor(RGB(255, 0, 0));
		pDC->SetBkMode(TRANSPARENT); //背景设为透明

		return (HBRUSH)::GetStockObject(NULL_BRUSH);
	}
这个是没有问题的, 但是我要改变Static Text的内容的时候, SetWindowText(), 却不能清除掉之前的内容,而是覆盖,前面的内容还是会存在。
需要先InvalidateRect(),然后再SetWindowText
simple_gogo 2013-05-22
  • 打赏
  • 举报
回复
引用 3 楼 u010445083 的回复:
滑过的时候我画的是第三个图片,但是滑过之后我要恢复到第一个图片,但是滑过之后,第一张图片的顶部仍留有第三张图片的顶部部分,而不檫除掉。
图片处理一下,所有图片的高度要相同,宽度相等!
steven_geek 2013-05-21
  • 打赏
  • 举报
回复
还有一个问题, 我用Static Text来显示文字, 背景透明
if(nCtlColor == CTLCOLOR_STATIC)
	{
		pDC->SelectObject(m_fontBig);
		pDC->SetTextColor(RGB(255, 0, 0));
		pDC->SetBkMode(TRANSPARENT); //背景设为透明

		return (HBRUSH)::GetStockObject(NULL_BRUSH);
	}
这个是没有问题的, 但是我要改变Static Text的内容的时候, SetWindowText(), 却不能清除掉之前的内容,而是覆盖,前面的内容还是会存在。
coolcoffee4051982 2013-05-21
  • 打赏
  • 举报
回复
把图片处理一下,不让他跳
steven_geek 2013-05-21
  • 打赏
  • 举报
回复
滑过的时候我画的是第三个图片,但是滑过之后我要恢复到第一个图片,但是滑过之后,第一张图片的顶部仍留有第三张图片的顶部部分,而不檫除掉。
steven_geek 2013-05-21
  • 打赏
  • 举报
回复

就是这样一张图片,鼠标滑过后,不会恢复到正常的图片,而是正常的图片上面还会有叠影,不知道我这样描述是否明白,多谢
simple_gogo 2013-05-21
  • 打赏
  • 举报
回复
引用 楼主 u010445083 的回复:
从网上下载了一个PNGButton类来实现了PNG的按钮, 三种状态的图片我是放在同一个PNG文件中, 现在我的问题是: 1.鼠标停留在按钮上的时候我的图片跳起来的; 2. 当鼠标离开按钮的时候,跳起来的图片并没有檫除,这使得我正常的图片会有一部分叠影; 是不是可以每次画按钮的时候我先檫除一下以前的? 还是有其他的解决方法,谢谢
1.图片跳起来,是什么图片?按钮的图片还是贴上上的图片? 。。。。。。 LZ把问题说清楚点三!

15,980

社区成员

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

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