zoukankan      html  css  js  c++  java
  • 设备上下文-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结构,在此函数内重绘。

  • 相关阅读:
    第05组 Beta版本演示
    第05组 Beta冲刺(4/4)
    第05组 Beta冲刺(3/4)
    第05组 Beta冲刺(2/4)
    第05组 Beta冲刺(1/4)
    第05组 Alpha事后诸葛亮
    第05组 Alpha冲刺(4/4)
    第05组 Alpha冲刺(3/4)
    第05组 Alpha冲刺(2/4)
    300iq Contest 3 C. Cells Blocking
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/9602531.html
Copyright © 2011-2022 走看看