一,原理:

设备上下文是连接程序与设备(屏幕,打印机)的中介。其内部封装的函数可以使得绘图程序一次书写,在各种设备上都能显示。作用相当于多语言翻译家。

设备上下文内部封装了写文本,绘制椭圆,矩形,直线及绘图属性,方便图形绘制。

设备上下文都会关联一个绘制目标(窗口,图片),在该绘制目标上进行绘制

二,初始化

用绘制目标作为参数进行初始化。

CDC dc(this);

CPaintDC dc(this);//调用BeginPaint()进行初始化,调用EndPaint()进行析构

CWindowDC dc(this);//调用GetWindowDC()进行初始化,ReleaseDC()进行析构,用于在整个窗口上绘制;

CClientDC dc(this);///调用GetDC()进行初始化,ReleaseDC()进行析构,用于在客户区绘制;

pDC=GetDC()//返回客户区得DC,必须通过ReleaseDC()释放

pDC=BeginPaint()//必须以EndPaint()结尾。

三,绘制图形

1.OnPaint()

对于非Doucment/View结构,比如图片或窗口,对话框在该函数内进行重绘。

在该函数内重绘中,必须调用且仅只能调用BeginPaint()和EndPaint()函数一次,如果不调用就会不停得重绘,原因搞不清楚。

而比较戏剧性得是OnPaint()的基函数CWnd::OnPaint()内部会调用Begin和End这么一对函数。因此,要么删除该基函数,要么不要调用涉及到该一对函数的初始化方式。

具体参考:https://www.cnblogs.com/lidabo/archive/2012/07/04/2576174.html

2.CView::OnDraw(DC* pDC)

对于Doucment/View结构,在此函数内重绘。

设备上下文-CDC绘图细节的更多相关文章

  1. 《绘图前设置:像素格式——PIXELFORMATDESCRIPT、设备上下文、渲染上下文》

    转载地址:https://www.cnblogs.com/wiener-zyj/p/4159745.html  像素格式——PIXELFORMATDESCRIPT.设备上下文.渲染上下文 在OpenG ...

  2. MFC里 显示设备上下文CClient dc(this) 和 CPaintDC dc(this)

    1 CPaintDC类(1)CPaintDC类是CDC类的一个派生类,该类一般用在响应WM_PAINT消息的函数OnPaint()中.(2)WM_PAINT消息是当窗口的某个区域需要重画时激发的窗口消 ...

  3. Quatre 2D的绘图功能的三个步骤(上下文,绘图,渲染)

    一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: ( ...

  4. Winform 获取桌面设备上下文

    //获得桌面设备上下文 us(Graphics g = Graphics.FromHwnd(IntPtr.Zero)) { g.DrawLine(Pens.Red, , , , ); }

  5. [转]Device Context 设备环境 设备上下文 理解

    http://blog.csdn.net/p424671075/article/details/7235601

  6. VC 绘图,使用双缓冲技术实现

    VC 绘图,使用双缓冲技术实现 - Cloud-Datacenter-Renewable Energy-Big Data-Model - 博客频道 - CSDN.NET VC 绘图,使用双缓冲技术实现 ...

  7. Win32 GDI 非矩形区域剪裁,双缓冲技术

    传统的Win32通过GDI提供图形显示的功能,包括了基本的绘图功能,如画线.方块.椭圆等等,高级功能包括了多边形和Bezier的绘制.这样app就不用关心那些图形学的细节了,有点类似于UNIX上的X- ...

  8. 用ATL和MFC来创建ActiveX控件

    摘要:目前MFC和ATL代表了两种框架,分别面向不同类型的基于Windows的开发.MFC代表了创建独立的Windows应用的一种简单.一致的方法:ATL提供了一种框架来实现创建COM客户机和服务器所 ...

  9. MFC中的一般经验之谈3

    Window消息可以分为三类:(1)标准Window消息(CWnd子类处理),(2)控制通知消息(CWnd子类处理),(3)命令消息(应用中的5类都可以).所有派生自CCmdObjec对象的类都可以处 ...

随机推荐

  1. SQL LEFT JOIN

    SQL LEFT JOIN 关键字 SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有 ...

  2. vue-router路由器的使用

    一. vue-router路由 1.简介 1.为什么要用vue-router 使用Vue.js开发SPA(Single Page Application)单页面应用 2.什么是单页面应用 根据不同ur ...

  3. maven依赖排除、顺序原则、版本统一管理

    <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core& ...

  4. javascript Date对象 之 时间转字符串

    javascript Date对象 --> 时间转字符串: 测试代码: <!DOCTYPE html> <html lang="en"> <he ...

  5. 【Python】常用内建模块(卒)

    内容来自廖雪峰的官方网站 笔记性质 1.datetime 2.collections 3.base64 4.struct 5.hashlib 6.itertools 7.contextlib 8.XM ...

  6. J2EE--Hibernate基础笔记

    因为写的是基础内容,所以在这里,(映射集合.映射组件.复合主键和联合主键,jpa annotation,关联映射,hql等等实用内容)都不会提到- 这里写的就是试用李刚<J2EE实战>那本 ...

  7. MapReduce:给出children-parents(孩子——父母)表,要求输出grandchild-grandparent(孙子——爷奶)表

    hadoop中使用MapReduce单表关联案例: MapReduce:给出children-parents(孩子——父母)表,要求输出grandchild-grandparent(孙子——爷奶)表. ...

  8. JavaWeb HTML

    1. HTML介绍 1.1. 什么是HTML HTML的全称为Hyper Text Markup Language,译为超文本标记语言. 超文本,就是指页面内可以包含图片.链接,甚至音乐.程序等非文字 ...

  9. 华为交换机S5700系列配置镜像端口(1:1)

    配置本地镜像口(1:1) 组网需求 如图一所示,某公司行政部通过Switch与外部Internet通信,监控设备Server与Switch直连. 现在希望通过Server对行政部访问Internet的 ...

  10. SpringBoot 定义通过字段验证

    第一步:定义ValidationResult类 public class ValidationResult { // 校验结果是否有错 private boolean hasErrors = fals ...