需求是要达到以下效果,按钮显示红色,再按一次显示绿色,用颜色显示目前振动盘的状态


思路,
1. 建立一个Picture Control空间,ID取名 IDC_COMING ,绑定变量CStatic m_coming;
2. 写一个变绿色的方法
void CDlg7::setPictureColorGreen()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialogEx::OnPaint()
CRect rc;
CWnd *pWnd = GetDlgItem(IDC_COMING);//参数为控件ID
pWnd->GetClientRect(&rc);//rc为控件的大小。
int py = rc.Height();
int px = rc.Width();
FillRect(m_coming.GetDC()->GetSafeHdc(), &rc, CBrush(RGB(0, 255, 0)));
}
3. 再写一个变红色的,只改变最后一行
void CDlg7::setPictureColorRed()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialogEx::OnPaint()
CRect rc;
CWnd *pWnd = GetDlgItem(IDC_COMING);//参数为控件ID
pWnd->GetClientRect(&rc);//rc为控件的大小。
int py = rc.Height();
int px = rc.Width();
FillRect(m_coming.GetDC()->GetSafeHdc(), &rc, CBrush(RGB(255, 0, 0)));
}
4. 添加OnPaint事件,初始化成绿色
void CDlg7::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialogEx::OnPaint()
setPictureColorGreen();
}
5. 最后添加按钮事件
void CDlg7::OnBnClickedButton6()
{
CString str;
if (GetDlgItemText(IDC_BUTTON6, str), str == _T("启动震动盘"))
{
setPictureColorRed();
SetDlgItemText(IDC_BUTTON6, _T("关闭震动盘"));
}
else
{
setPictureColorGreen();
SetDlgItemText(IDC_BUTTON6, _T("启动震动盘"));
}
}
完成了

本文介绍如何使用MFC实现按钮控制图片颜色的切换,通过编写setPictureColorGreen()和setPictureColorRed()方法来改变按钮背景颜色,分别显示为绿色和红色,以此反映振动盘的工作状态。
1187

被折叠的 条评论
为什么被折叠?



