MFC-GDI和GDI+

 

设备环境DC的概念:

  设备环境DC(Device Context又称为设备上下文,也称为设备描述表)。它是一个关于如何绘制图形的方法的集合,它既可以绘制各种图形,也可以确定在应用窗口中绘制图形的方式,就是绘图模式和映射模式。

  在Win32编程中,设备环境是用HDC来标识。H的意思Handle句柄的意思。

  【DC可以理解为画布】

CPaintDC 、CWindowDC、 CClientDC、 CDC的区别与联系:

DC就是设备上下文(Device Context, DC),可以把它理解成“画布”。
操作系统本来是使用HDC(HDC是DC的句柄,API中的一个类似指针的数据类型.)进行绘画的。
MFC中把HDC包装成了CDC类(MFC类的前缀都是C开头的),提供给程序员使用。
CPaintDC的父类就是CDC,换句话说两者底层使用同一种方法进行绘图。

MFC是通过消息泵信息处理的。CPaintDC内部发出绘图消息给系统。所以描画画面时,最好使用CPaintDC。
CDC只是HDC的包装,不包含绘图消息的发送。所以,创建图片文件(不需要刷新画面)等处理,需要使用CDC

 

 

一句话概括:

 CPaintDC            无效区dc,      相当于BeginPaint,   EndPaint

CClientDC          客户区dc,      相当于GetDC,   ReleaseDC

CWindowDC      整窗口dc,      相当于GetWindowDC,   ReleaseDC

CDC                     任何dc,          相当于CreateDC,   DeleteDC

CWindowDC与CClientDC,CPaintDC的区别:CWindowDC可在非客户区绘制图形,而CClientDC,CPaintDC只能在客户区绘制图形。CWindowDC下坐标原点是在屏幕的左上角,CClientDC,CPaintDC下坐标原点是在客户区的左上角。CClientDC与CPaintDC的区别:
CPaintDC的对象一般用在OnPaint内以响应Windows消息WM_PAINT,自动完成绘制,在整个窗口内进行重画,维持原有窗口完整性。CClientDC应用在非响应Windows消息WM_PAINT的情况下,进行实时绘制,绘制的区域内被重画
 

GDI

 

获取HDC方法                               CreatePen创建画笔

SaveDC保存DC                                RestoreDC还原DC

画刷 

Rectangle绘制矩形                     FillRect绘制并填充矩形

FrameRect绘制矩形边框            InvertRect反转颜色

HFONT字体 

DrawText在指定的矩形里写入格式化的文本

TextOut绘制文本

SelectObject新对象替换相同类型的对象

GetStockObject获取库存对象 

GetObject获取对象信息             BeginPaint和EndPaint

BitBlt把源DC拷贝到目标DC(原大小拷贝)

StretchBlt把源DC拷贝到目标DC(缩放拷贝)

SetTextColor设置指定DC中的文字颜色

GetTextColor获取DC中的文本颜色

SetBkMode设置指定DC的背景混合模式

GetBkMode获取指定DC的背景混合模式 

SetPixel绘制一个点                  GetPixel获取指定点的颜色

MoveToEx移动绘制点               LineTo绘制直线

Ellipse绘制椭圆                         Pie绘制饼图

CreateCompatibleBitmap创建兼容位图

HRGN区域                                  SelectClipRgn选择剪切区域

CombineRgn将两个区域组合为一个新区域

ExtSelectClipRgn将指定区域与当前剪辑区域组合在一起

FillRgn用指定画刷填充区域 

PaintRgn用HDC中的当前画刷填充区域

FrameRgn用指定刷子围绕指定区域画一个外框

InvalidateRect使矩形区域的图形变得无效 

Invalidate使整个客户区无效

InvalidateRgn指定区域无效

ExcludeClipRect创建一个新的剪辑区域,该区域由现有剪辑区域减去指定的矩形组成

IntersectClipRect创建一个新的剪裁区域,他是前一个剪裁区域与一个矩形的交集

OffsetClipRgn移动剪辑区域 

SetViewportOrgEx设置DC的绘制原点坐标

GetViewportOrgEx获取DC的绘制原点坐标 

GetBitmapBits获取兼容位图的数据 

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(206)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2022-04-09 浩辰CAD-图层管理
2019-04-09 第十章第一节 浮力
点击右上角即可分享
微信分享提示

目录导航