[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

目录
相关文章
|
1月前
QT笔刷画笔渲染的使用
QT笔刷画笔渲染的使用
|
10月前
|
编解码 异构计算
QT+OpenGL实例化和抗锯齿
如果将数据一次性发送给GPU,然后使用一个绘制函数让OpenGL利用这些数据绘制多个物体,就会方便了。这就是实例化(Instancing)。
210 0
|
算法 数据可视化 Windows
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制(下)
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制
|
API 图形学
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制(上)
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制
【QT】QT不规则窗体效果——遮罩
【QT】QT不规则窗体效果——遮罩
简单的笔刷效果【OpenGL】
简单的笔刷效果【OpenGL】
168 0
简单的笔刷效果【OpenGL】
MFC实现为窗体添加的背景图片
将一个bmp图片添加到资源中 在资源视图中更改位图资源的ID为IDB_BITMAP_BACKGROUND。   第一种方法:   在Dialog中添加一个Picture Control控件,将Picture Control控件的Type属性 更改为Bitmap。
851 0
|
程序员 Windows
MFC添加背景图片三种方法
方法一: 1、声明成员变量CBrush m_brush;2、在InitDialog中添加代码: ? CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1);  //IDB_BITMAP1是图片资源ID m_brush.
1446 0
|
C#
WPF线性渐变画刷应用之——炫彩线条
原文:WPF线性渐变画刷应用之——炫彩线条 效果图: Xaml代码:                                                          
928 0