[MFC] 画笔、画刷的使用

简介: [MFC] 画笔、画刷的使用

流程:

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

目录
相关文章
|
4月前
使用QT绘制一个多边形
使用QT绘制一个多边形
96 0
|
6月前
Qt绘图(线条、椭圆、矩形、图片滚动)
Qt绘图(线条、椭圆、矩形、图片滚动)
418 3
|
7月前
QT笔刷画笔渲染的使用
QT笔刷画笔渲染的使用
|
API 图形学
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制(上)
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制
|
算法 数据可视化 Windows
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制(下)
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制
|
存储 缓存 数据可视化
Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
|
C++
Qt界面优化:Qt去边框与窗体圆角化
Qt界面优化:Qt去边框与窗体圆角化
540 0
Qt界面优化:Qt去边框与窗体圆角化
QT软件开发: QGraphicsView设置无边框背景透明
QT软件开发: QGraphicsView设置无边框背景透明
709 0
QT软件开发: QGraphicsView设置无边框背景透明
【QT】QT不规则窗体效果——遮罩
【QT】QT不规则窗体效果——遮罩