流程:
a)定义画家(OnPaint()函数中实现)
b)定义画笔(CPen)、画刷(CBrush )–填充封闭图形,包括样式、颜色等。
c)将画笔、画刷交给画家使用----CDC::SelectObject
实现:在OnPain()函数中加入
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)CPaintDC dc(this); //若用此句,得到的是对话框的DC,图片将被绘制在对话框上.
2) CPaintDC dc(GetDlgItem(IDC_STATIC1)); //用此句,得到picture控件的DC,图像将被绘制在控件上
3)CDC dc;
dc.m_hDC=::GetDC(NULL); //若用此两句,得到的是屏幕的DC,图片将被绘制在屏幕上
CPen类型函数pen()第一个参数是线型,有如下线型:
注意: 不要将实现代码放在if (IsIconic())语句下,因为IsIconic()作用是判断窗口是否处于最小化状态(点击了最小化按钮之后),一般将窗口最小化之后,才会执行里面的语句。
结果:
/******************************************************************************************************/
上面说的是在控件上进行绘图,那么在图片上如何进行操作呢?
很简单,为你图片所在的控件添加一个变量,比如m_pic,然后在OnPaint()中加入
//实现图片打开功能的函数 OnBnClickedButton2(); //例:在图片上画一个圆 CDC *pDC = m_pic.GetWindowDC(); CPen pen(PS_SOLID,6,RGB(255,0,0)); pDC->SelectObject(&pen); pDC->Ellipse(100,100,101,101);
效果:
更多画线方式参考:https://www.cnblogs.com/mxbs/p/6216464.html