MFC绘图概述

该篇博客并不是高深的技术博客,是面向初学者对绘图过程的常见函数介绍:

如下代码:

HDC hdc;

//HDC是设备描述表,它的作用是统一管理各种绘图有关的驱动和响应。简单一句话,它就是一种方面绘图的windows数据结构。

//设备描述表对象有多种类型,如下例子,有全局设备描述表、MFC封装的CDC设备描述表、继承自CDC设备描述表的

//CClientDC设备描述表、继承自CDC设备描述表的CWindowDC设备描述表这几类。CWindowDC设备描述表有一个

//特点,就是它可以作用的范围是指定对象的全局区域,无论是客户区还是非客户区。

hdc=::GetDC(m_hWnd);
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);

//画线是绘图最基本的操作,画线需要两个函数辅助,一个是MoveTo,另一个是LineTo,从这两个函数的名字我们就

//能知道分别是确定起始点和确定终点并绘直线

CDC* pDC=GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);

CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
CWindowDC dc(GetDesktopWindow());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);

//绘制区域根据操纵的对象而定,比如选定的是View类的对象,那么操纵绘制区域就是view视图窗口的区域,如果是

//Desktop对象,那么绘制区域就是整个windows桌面。windows桌面的对象可以调用GetDesktopWindow()

//函数获得。获得父窗体的对象指针可以通过GetParent()函数得到。

CClientDC dc(this);
CPen pen(PS_DOT,1,RGB(255,0,0));
CPen *OldPen=dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(OldPen);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);

//除了绘制线条以外,也可以直接指定需要绘制的形状,比如矩形、椭圆等等,Rectangle()就是绘制矩形的函数

//绘制这类形状就牵扯到填充问题。

//默认情况下,填充色是白色,如果想要改变填充属性,可以调用SelectObject()函数将指定填充色放入

//设备描述表对象中。

CBrush brush(&bitmap);
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);

//如果想要获得空背景进行填充,可以调用GetStockObject(NULL_BRUSH)函数获得,

//通过FromHandle函数将空画刷句柄转换为空画刷类对象。

CBrush *brush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));

CClientDC dc(this);

CBrush *oldbrush=dc.SelectObject(brush);

dc.Rectangle(CRect(m_ptOrigin,point));
dc.SelectObject(oldbrush);
时间: 2024-11-08 23:45:03

MFC绘图概述的相关文章

【MFC】MFC绘图不闪烁——双缓冲技术

MFC绘图不闪烁——双缓冲技术[转] 2010-04-30 09:33:33|  分类: VC|举报|字号 订阅 [转自:http://blog.163.com/[email protected]/blog/static/49846449201033093333394/] 在VC/MFC用CDC绘图时,频繁的刷新,屏幕会出现闪烁的现象,CPU时间占用率相当高,绘图效率极低,很容易出现程序崩溃. 所谓双缓冲技术,下面是百度百科的解释: 我们看电视时,看到的屏幕称为OSD层,也就是说,只有在OSD层

QT 与MFC绘图技术比较

在工控监测领域,经常需要动态绘制曲线,观察曲线的变化趋势,绘制波形图,绘制频谱等.在前面4讲中介绍了MFC经常用的TeeChart控件和Hight-Speed Chart Ctrl,这两个都是MFC绘图控件的经典(另外,在Qt中还有QwtPlot和QCustomPlot两大神器).许多人问如何绘制动态变化的曲线,为此专门写下这篇文章. C++ GUI 绘图控件目录 MFC(VC) VS2010 使用TeeChart绘图控件 - 之一 - 控件和类的导入 VS2010 使用TeeChart绘图控件

MFC类库概述

Windows API的各个函数之间的关系很难理清, MFC只是使用抽象,封装,继承,多态性和模块化的面向对象原则,在逻辑上将Windows API分类. 抽象层次较高的类库和许多虚函数都会产生大而慢的应用程序.为了保证速度更快,规模更小,AFX开发组,发明了其他机制来处理Windows消息. MFC在没有大量虚函数的情况下保持了灵活性. MFC类库概述

C++MFC编程笔记day06 MFC向导、MFC绘图类使用

MFC绘图 MFC绘图类包括绘图设备类和绘图对象类 1 绘图设备类 CDC类-父类是CObject,封装的是一般的绘图设备,例如:显示器, 打印机等. CWindowDC类-父类是CDC类,封装的是窗口对象,包括客户区和非 客户区. CClientDC类-父类是CDC类,封装的仍然是窗口,但是只包括客户区. CPaintDC类-父类是CDC类,封装的是窗口的客户区.但是,它只用 在窗口的WM_PAINT消息处理函数中. CMetaFileDC类-父类是CDC类,作用保存绘制命令. 2 使用 创建

9.MFC绘图

一.MFC绘图 1.相关问题 WIN32 - HDC MFC - CDC类对象 2.相关类 (1)CDC类 - 父类CObject,封装了关于绘图的各种API函数,还封装了成员变量m_hDC(保存绘图设备句柄) (2)CDC类的子类 CClientDC - 封装了在客户区中绘图的绘图设备,::GetDC CWindowDC - 封装了在整个窗口中绘图的绘图设备,::GetWindowDC CPaintDC - 封装了在WM_PAINT消息中绘图的绘图设备,::BeginPaint (3)CGDI

MFC绘图(转载)

http://www.cppblog.com/bestcln/articles/83189.html 1 几何对象的结构和类 为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类.这些结构和类分别定义在头文件windef.h和afxwin.h中. 1.点 1)点结构POINT 点数据结构POINT用来表示一点的x.y坐标: typedef struct tagPOINT { LONG x; LONG y; } POINT; 2)点类CPoint 点类CPoint为一个没有基类的独立

第一章:ggplot2绘图概述

前言 ggplot2是R语言最为强大的作图软件包,强于其自成一派的数据可视化理念.当熟悉了ggplot2的基本套路后,数据可视化工作将变得非常轻松而有条理. 本文主要对ggplot2的可视化理念及开发套路做一个总体介绍,具体绘图方法(如折线图,柱状图,箱线图等)将在后面的文章中分别进行讲解. 核心理念 1. 将数据,数据相关绘图,数据无关绘图分离 这点可以说是ggplot2最为吸引人的一点.众所周知,数据可视化就是将我们从数据中探索的信息与图形要素对应起来的过程. ggplot2将数据,数据到图

MFC画图概述

该篇博客并非高深的技术博客,是面向刚開始学习的人对画图过程的常见函数介绍: 例如以下代码: HDC hdc; //HDC是设备描写叙述表,它的作用是统一管理各种画图有关的驱动和响应.简单一句话.它就是一种方面画图的windows数据结构. //设备描写叙述表对象有多种类型.例如以下样例,有全局设备描写叙述表.MFC封装的CDC设备描写叙述表.继承自CDC设备描写叙述表的 //CClientDC设备描写叙述表.继承自CDC设备描写叙述表的CWindowDC设备描写叙述表这几类. CWindowDC

MFC绘图基础——上机操作步骤

软件环境:VC++6.0 目的:熟悉基本的MFC框架搭建和了解界面 一,MFC上机操作步骤 1,在Windows桌面上运行VC++6.0. 2,新建项目工程文件. 3,在MFC 应用程序向导-步骤1 对话框中,选中单文档单选按钮,其余保持默认. 4,弹出新建工程信息的对话框,单击确定. 5,完成上述步骤后,工程Testone的MFC框架已经生成. 6,在集成开发环境的左侧工作窗口中有3个标签页. ClassView 显示所创建的类和成员函数 ResourceView 显示所创建的资源 FileV