[MFC] 画笔、画刷的使用
流程:
a)定义画家(()函数中实现)
b)定义画笔(CPen)、画刷( )–填充封闭图形,包括样式、颜色等。
c)将画笔、画刷交给画家使用----CDC::
实现:在()函数中加入
CPaintDC dc(GetDlgItem(IDC_STATIC3)); //用此句,得到picture控件的DC,图像将被绘制在控件上//画笔---CPen//画线//PS_SOLID:虚线,只有当画笔为1或者更小时才有效//10:线宽CPen pen(PS_SOLID,1,RGB(255,0,0));dc.SelectObject(&pen);dc.MoveTo(0,0);dc.LineTo(200,200);//画刷---CBrush//画圆dc.Ellipse(20,20,120,120);//直径为100//填充CBrush brush(RGB(255,0,0));dc.SelectObject(&brush);dc.Ellipse(20,20,120,120);
绘制位置的选择有三种,任选一种:
1) dc(this); //若用此句,得到的是对话框的DC,图片将被绘制在对话框上.
2) dc(()); //用此句,得到控件的DC,图像将被绘制在控件上
3)CDC dc;
dc.m_hDC=::GetDC(NULL); //若用此两句,得到的是屏幕的DC,图片将被绘制在屏幕上
CPen类型函数pen()第一个参数是线型,有如下线型:
注意: 不要将实现代码放在if (())语句下,因为()作用是判断窗口是否处于最小化状态(点击了最小化按钮之后),一般将窗口最小化之后,才会执行里面的语句。
结果:
/******************************************************************************************************/
上面说的是在控件上进行绘图,那么在图片上如何进行操作呢?
很简单,为你图片所在的控件添加一个变量,比如m_pic,然后在()中加入
//实现图片打开功能的函数
OnBnClickedButton2();
//例:在图片上画一个圆
CDC *pDC = m_pic.GetWindowDC();
CPen pen(PS_SOLID,6,RGB(255,0,0));
pDC->SelectObject(&pen);
pDC->Ellipse(100,100,101,101);
效果: