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);
posted on 2017-08-15 08:28  ljbguanli  阅读(197)  评论(0编辑  收藏  举报