0
点赞
收藏
分享

微信扫一扫

[MFC] 画笔、画刷的使用


流程:

a)定义画家(OnPaint()函数中实现)

b)定义画笔(CPen)、画刷(CBrush )–填充封闭图形,包括样式、颜色等。

c)将画笔、画刷交给画家使用----CDC::SelectObject

[MFC] 画笔、画刷的使用_控件


实现:在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()第一个参数是线型,有如下线型:

[MFC] 画笔、画刷的使用_c++_02

不要将实现代码放在if (IsIconic())语句下,因为IsIconic()作用是判断窗口是否处于最小化状态(点击了最小化按钮之后),一般将窗口最小化之后,才会执行里面的语句。

   

       

结果:

[MFC] 画笔、画刷的使用_SOLID_03

/******************************************************************************************************/
上面说的是在控件上进行绘图,那么在图片上如何进行操作呢?
很简单,为你图片所在的控件添加一个变量,比如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);

效果:

[MFC] 画笔、画刷的使用_控件_04

举报

相关推荐

0 条评论