学习:Radio Button和Check Box

实现颜色与图形变换的例子:

/*
D:\Visual_Studio_repos\MFC\2\
*/
void CMFCApplication2Dlg::OnBnClickedCheck3()
{
	Invalidate(); //重写绘图,会调用OnEraseBkgnd事件
}
BOOL CMFCApplication2Dlg::OnEraseBkgnd(CDC* pDC)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	bool ret =  CDialogEx::OnEraseBkgnd(pDC);
	
	//定义颜色变量
	int rgb_red, rgb_green, rgb_blue;
	
	rgb_red = chk_red.GetCheck() ? 255 : 0;
	rgb_green = chk_green.GetCheck() ? 255 : 0;
	rgb_blue = chk_blue.GetCheck() ? 255 : 0;

	COLORREF m_Color = RGB(rgb_red, rgb_green, rgb_blue);

	CBrush brush;
	CBrush *OldBrush;

	brush.CreateStockObject(m_Color);
	OldBrush = pDC->SelectObject(&brush); //保存默认的的画刷, 之后进行恢复,作用避免内存泄露
	RECT rect = {50,20,200,180};

        //绘图
	if (r_rect.GetCheck()) {
		pDC->Rectangle(&rect);
	}
	else {
		pDC->Ellipse(&rect);
	}
	
	pDC->SelectObject(OldBrush); //恢复老的画刷,避免内存泄露
	return ret;
}

posted @ 2020-02-07 13:55  zpchcbd  阅读(182)  评论(0编辑  收藏  举报