首页 > 其他 > 详细

设备上下文-CDC绘图细节

时间:2018-09-07 10:03:37      阅读:156      评论:0      收藏:0      [点我收藏+]

一,原理:

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

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

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

二,初始化

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

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绘图细节

原文:https://www.cnblogs.com/zhuluqing/p/9602531.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!