设备上下文-CDC绘图细节
一,原理:
设备上下文是连接程序与设备(屏幕,打印机)的中介。其内部封装的函数可以使得绘图程序一次书写,在各种设备上都能显示。作用相当于多语言翻译家。
设备上下文内部封装了写文本,绘制椭圆,矩形,直线及绘图属性,方便图形绘制。
设备上下文都会关联一个绘制目标(窗口,图片),在该绘制目标上进行绘制
二,初始化
用绘制目标作为参数进行初始化。
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结构,在此函数内重绘。
最新文章
- UE4 中在 Actor 中动态 Create Component 与ChildActor 的 小笔记
- java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
- (String) | String.valueOf()
- EXCEL 数字+E+数字 自动识别为指数形式的解决办法
- dbvisualizer中文乱码
- 基于u-boot源码的简单shell软件实现
- 工厂模式 - 程序实现(java)
- 遍历datatable的几种方法【转载】
- 洛谷 P1896 互不侵犯King
- Mr. Kitayuta vs. Bamboos
- 设计模式——策略模式(C++实现)
- 推荐一款好用的任务定时器:Quartz
- Python简单实现决策树
- http中的socket是怎么一回事
- 【BZOJ4042】【CERC2014】parades 状压DP
- vs2017 本地IP地址调试 局域网调试
- 【转载】LCT
- break&;&;continue
- SVG 学习<;八>; SVG的路径——path(2)贝塞尔曲线命令、光滑贝塞尔曲线命令
- Expo大作战(十八)--expo如何发布成独立应用程序,打包成apk或者ipa,发布到对应应用商店