MFC 在特定控件中绘图

拖入了一个长方形的Group类型控件,控件的ID为IDC_MYSTATIC,现在想在该控件中画图。实现起来很简单:要获取某个区域的指针,然后获取画布

CDC
void CGroupDrawDlg::OnPaint()
{
	......
	CWnd *pWin = GetDlgItem(IDC_MYSTATIC);//获取该控件的指针,就可以对该控件直接操作了
	
	CRect rect;
	pWin->GetClientRect(rect);//把控件的长宽、坐标等信息保存在rect里
	int width = rect.Width();//可以获取宽和高
	int height = rect.Height();
	
	//有了画布,下面可以自由的画图了,想怎么画就怎么话,

	CDC *pDc = pWin->GetDC();//获取该控件的画布
	pDc->Rectangle(rect);
	CBrush myBrush;
	myBrush.CreateSolidBrush(RGB(192, 250, 233));
	pDc->FillRect(rect, &myBrush);

	CDC *pDC2 = pWin->GetDC();
	POINT aPoint[5] = { 50,50,50,100,100,100,100,50,50,50 };
	CPen penBlue(PS_SOLID, 2, RGB(128, 0, 128));
	CPen* pOldBrush = pDC2->SelectObject(&penBlue); //将画刷颜色赋予*pDC
	pDC2->Polyline(aPoint, 5);
	
	ReleaseDC(pDc);
	ReleaseDC(pDC2);
}

在这里插入图片描述
在这里插入图片描述

CClientDC

对组框添加变量CStatic m_group;
在这里插入图片描述

CClientDC dc(&m_group);//this一般指向本窗口或当前活动视图
	POINT po[5] = { 100,0 ,200,100 ,100,200 ,0,100,100,0 }; //给定坐标
	dc.Polyline(po, 5);//给数组.以及数组大小.

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MFC自定义控件的颜色可以通过以下步骤实现: 1. 在对话类的头文件添加控件的变量声明,例如`CButton m_btnCustom`。 2. 在对话类的OnInitDialog函数使用`m_btnCustom.SubclassDlgItem(IDC_CUSTOM_BUTTON, this)`将控件与变量关联起来。 3. 在对话类的OnCtlColor函数进行颜色设置。根据控件的类型,可以使用不同的CTLCOLOR_XXX值来区分控件类型。 4. 在OnCtlColor函数,使用CDC类的SetTextColor和SetBkColor函数设置控件的文本颜色和背景颜色。 5. 在OnCtlColor函数,使用CDC类的SelectObject函数选择自定义字体。 下面是一个示例代码,演示如何在MFC自定义按钮控件的颜色和字体: ```cpp BOOL CMyDialog::OnInitDialog() { CDialogEx::OnInitDialog(); // 将按钮控件与变量关联 m_btnCustom.SubclassDlgItem(IDC_CUSTOM_BUTTON, this); return TRUE; } HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // 判断控件类型 if (pWnd == &m_btnCustom) { // 设置文本颜色和背景颜色 pDC->SetTextColor(RGB(255, 0, 0)); // 设置文本颜色为红色 pDC->SetBkColor(RGB(0, 255, 0)); // 设置背景颜色为绿色 // 选择自定义字体 CFont font; font.CreateFont(20, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("Arial")); pDC->SelectObject(&font); // 返回背景画刷 hbr = (HBRUSH)GetStockObject(NULL_BRUSH); } return hbr; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值