[MFC] 画笔、画刷的使用
  xzLt1V1gTXqr 2023年12月22日 21 0


流程:

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

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

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

[MFC] 画笔、画刷的使用_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] 画笔、画刷的使用_microsoft_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] 画笔、画刷的使用_c++_04

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
  8Tw5Riv1mGFK   2024年05月01日   72   0   0 C++
  BYaHC1OPAeY4   2024年05月08日   53   0   0 C++
  yZdUbUDB8h5t   2024年05月05日   40   0   0 C++
  oXKBKZoQY2lx   2024年05月17日   51   0   0 C++
xzLt1V1gTXqr