MFC处理背景图片切换时,背景上的按钮图片不变化

本文介绍了如何在MFC应用程序中处理背景图片的切换,同时解决背景图片上按钮图片不随背景变化的问题。通过使用GDI+直接在对话框上画图,实现实时切换背景图片并动态改变右上角关闭按钮的颜色效果。
摘要由CSDN通过智能技术生成
近期项目中需要在一个MFC对话框中轮播显示图片,效果如下:

一共5张背景图,图上有5个小圆点轮流播放显示,并且小圆点加亮,右上角是关闭按钮,鼠标放上去按钮变红色。
最开始的方案是在dlg上添加一个picture控件来加载背景图片,OnTimer事件中控制轮播;在picture上添加5个radio按钮,radio按钮用的是网上下载的一个类CxSkinButton,将圆圈图片添加到bitmap资源中,初始化对话框时设置按钮的图片,这个类将选中,未选中,鼠标移上,鼠标移开灯状态都处理好了,m_radioP1.SetSkin(IDB_BITMAP_LOGIN_NORMAL, IDB_BITMAP_LOGIN_CHECK, IDB_BITMAP_LOGIN_GREEN, IDB_BITMAP_LOGIN_NORMAL, 0, IDB_BITMAP_LOGIN_MASK, 0, 0, 0);
轮播到当前图片时将对应的radio属性设置为SetCheck(1);右上角的关闭图片也用的bmp(这个类的缺点是不支持png格式),做完之后小圆点的效果还可以切换都没有问题,右上角的关闭按钮在图片切换时会漏出白底,初始化时没问题;因此就想换种方式显示。
最终在看了网上的一些解决方案后,选择用GDI+直接在dlg上画图,右上角的关闭不用按钮也直接贴图,OnMouseMove中根据鼠标位置切换图片,当鼠标移动上去时显示红底图片,移开显示初始图片;
具体实现代码如下:
首先是添加gdi+
1.在Stdafx.h头文件中添加如下代码
#include <GdiPlus.h>
#pragma
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值