首页 > 其他分享 >MFC-GDI和GDI+

MFC-GDI和GDI+

时间:2023-04-09 09:02:17浏览次数:41  
标签:MFC CDC CClientDC DC HDC GDI CPaintDC 绘制

 

设备环境DC的概念:

  设备环境DC(Device Context又称为设备上下文,也称为设备描述表)。它是一个关于如何绘制图形的方法的集合,它既可以绘制各种图形,也可以确定在应用窗口中绘制图形的方式,就是绘图模式和映射模式。

  在Win32编程中,设备环境是用HDC来标识。H的意思Handle句柄的意思。

  【DC可以理解为画布】

CPaintDC 、CWindowDC、 CClientDC、 CDC的区别与联系:

DC就是设备上下文(Device Context, DC),可以把它理解成“画布”。
操作系统本来是使用HDC(HDC是DC的句柄,API中的一个类似指针的数据类型.)进行绘画的。
MFC中把HDC包装成了CDC类(MFC类的前缀都是C开头的),提供给程序员使用。
CPaintDC的父类就是CDC,换句话说两者底层使用同一种方法进行绘图。

MFC是通过消息泵信息处理的。CPaintDC内部发出绘图消息给系统。所以描画画面时,最好使用CPaintDC。
CDC只是HDC的包装,不包含绘图消息的发送。所以,创建图片文件(不需要刷新画面)等处理,需要使用CDC

 

 

一句话概括:

 CPaintDC            无效区dc,      相当于BeginPaint,   EndPaint

CClientDC          客户区dc,      相当于GetDC,   ReleaseDC

CWindowDC      整窗口dc,      相当于GetWindowDC,   ReleaseDC

CDC                     任何dc,          相当于CreateDC,   DeleteDC

CWindowDC与CClientDC,CPaintDC的区别:CWindowDC可在非客户区绘制图形,而CClientDC,CPaintDC只能在客户区绘制图形。CWindowDC下坐标原点是在屏幕的左上角,CClientDC,CPaintDC下坐标原点是在客户区的左上角。CClientDC与CPaintDC的区别: CPaintDC的对象一般用在OnPaint内以响应Windows消息WM_PAINT,自动完成绘制,在整个窗口内进行重画,维持原有窗口完整性。CClientDC应用在非响应Windows消息WM_PAINT的情况下,进行实时绘制,绘制的区域内被重画  

获取HDC方法                               画笔HPEN

 

 

 

 

 

 

 

标签:MFC,CDC,CClientDC,DC,HDC,GDI,CPaintDC,绘制
From: https://www.cnblogs.com/liming19680104/p/17299797.html

相关文章

  • MFC-画笔HPEN
         ......
  • MFC-GDI和GDI+
           ......
  • MFC-只运行一个实例
           ......
  • C++ MFC中嵌入web网页控件(WebBrowser、WebView2、CEF3)
    1、简介WebBrowser控件最常见的用途之一是向应用程序添加Internet浏览功能。使用IWebBrowser2接口,可以浏览到本地文件系统、网络或万维网上的任何位置。可以使用IWebBrowser2::Navigate方法告知控件要浏览到哪个位置。第一个参数是包含位置名称的字符串。要浏览到本地文件系......
  • FFmpeg再学习 -- FFmpeg+SDL+MFC实现图形界面视频播放器
    继续看雷霄骅的课程资料-基于FFmpeg+SDL的视频播放器的制作最后一篇,主要是想学一下MFC创建和配置。一、创建MFC工程文件->新建->项目->VisualC++->MFC应用程序应用程序类型,选择基于对话框生成效果如下:二、设置控件找到“工具箱”,就可以将相应的控件拖拽至应用程序对话框......
  • Mel频谱图与MFCC
    这次要讲的是语音处理中常用的特征值--Mel频谱图(MelSpectrogram)和Mel频率倒谱系数(MelFrequencyCepstrumCoefficient,MFCC)。什么是Mel?Mel是S.S.Stevens等人于1937年发表的论文\(^{[1]}\)中定义的一种非线性刻度单位。它的定义是为了反应人类听觉系统对声音频率的主观感......
  • 【教训】wine 找不到MFC42.dll问题 wine cannot find MFC42.dll
    wine运行WinKawaks报告 找不到MFC42.dllwinecannotfindMFC42.dll前几天还是可以的,后来重装了,就显示无法找到了,needreinstall了。MFC42.DLL拷贝到软件目录和syste......
  • MFC-CStringArray
            ......
  • MFC-注册表
          ......
  • Learning MFC programming (by GPT)
    LearningMFCprogrammingcanbedonethroughthefollowingsteps:FamiliarizeyourselfwithC++programminglanguage,asMFCisaC++library.Understandthe......