一,原理:

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

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

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

二,初始化

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

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结构,在此函数内重绘。

最新文章

  1. UE4 中在 Actor 中动态 Create Component 与ChildActor 的 小笔记
  2. java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
  3. (String) | String.valueOf()
  4. EXCEL 数字+E+数字 自动识别为指数形式的解决办法
  5. dbvisualizer中文乱码
  6. 基于u-boot源码的简单shell软件实现
  7. 工厂模式 - 程序实现(java)
  8. 遍历datatable的几种方法【转载】
  9. 洛谷 P1896 互不侵犯King
  10. Mr. Kitayuta vs. Bamboos
  11. 设计模式——策略模式(C++实现)
  12. 推荐一款好用的任务定时器:Quartz
  13. Python简单实现决策树
  14. http中的socket是怎么一回事
  15. 【BZOJ4042】【CERC2014】parades 状压DP
  16. vs2017 本地IP地址调试 局域网调试
  17. 【转载】LCT
  18. break&&continue
  19. SVG 学习<八> SVG的路径——path(2)贝塞尔曲线命令、光滑贝塞尔曲线命令
  20. Expo大作战(十八)--expo如何发布成独立应用程序,打包成apk或者ipa,发布到对应应用商店

热门文章

  1. Rare But Powerful Vim Commands.
  2. PHP基础学习代码案例
  3. ImageMagick来处理图片,缩放,调整高度等操作
  4. Python(面向对象编程4——继承顺序、封装)
  5. Android位置权限以及数组寻找索引的坑
  6. 什么是JIT?
  7. Linux设备驱动程序加载/卸载方法 insmod和modprobe命令
  8. SQL char Nvarchar 详解
  9. Saltstack 命令参数整理
  10. CSS3小图标菜单导航