【GDI】

Graphic Device Interface,图形设备接口

【CDC】

设备环境。

【GDI和DC关系】

在单任务环境如MS-DOS中,应用程序可以自己的做它想做的事情,无论是在屏幕上画一条线,重新编写适配器的调色板,还是转换到另一种图像模式。而在窗口化多任务环境如Windows中,程序则失去了这种自由,因为程序A的输出必须与程序B的输出格开,首先这意味着各程序的输出必须限制在自己的窗口中。GDI()使用单一的机制保证在窗口中画图的个程序遵循这一规则,这种机制我们称之为设备描述表(或者设备环境)。

当Windows程序在屏幕、打印机或其他输出设备上画图时,它并不是将像素直接输出到设备上,而是将图绘制到由设备描述表(DC)表示的逻辑意义上的"显示平面"上去。设备描述表是Windows内在的一种数据结构,它包含GDI需要的所有关于显示平面情况的描述字段,包括相连的物理设备和各种各样的状态信息。在屏幕上画图之前,Windows程序从GDI获取设备描述表句柄(Device Context Handle),每一次调用一个GDI输出函数时它就会把这个句柄传回给GDI。如果没有有效的设备句柄,则GDI不会做任何的绘图动作。通过设备描述表,GDI可确保程序所画的任何图形都能剪贴到屏幕的特定区域。设备描述表在使GDI摆脱设备限制的过程中发挥了重要的作用。获得设备描述表的句柄之后,同一GDI函数可以向多种输出设备上画图。

【DC示例】

我们想在重绘的时候始终显示一段欢迎语,就应该在OnDraw函数中添加

void CTextView::OnDraw(CDC* pDC)
{
CTextDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
                                                 // 这是用的第二种方法,我们看到OnDraw的参数正是CDC对象指针
// pDC->TextOut(200,200,"Lide Only"); //使用的是封装在CDC类中的TextOut,无需给他传递DC

//也无需关心m_hWnd的事情,CDC类内部依旧完成了这项工作

// HDC hdc; //依旧使用老方法获取dc
//     hdc = ::GetDC(m_hWnd);
// ::TextOut(hdc,400,400,"Lide Only",9); //使用的是全局函数TextOut
}

http://blog.sina.com.cn/s/blog_4dd60c7a0100jw6i.html

GDI是图形设备接口的意思,包括DC,HBITMAP,HFONT,HPEN,HBRUSH等等。

CDC只是用C++把DC给封装了。

CDC就是设备环境,
GDI中也包括该元素,正如楼上所说的,用GDI绘图时,先申请设备环境,
再在上面用其他工具绘图

GDI是一个windows图形函数库,它的作用类似于tc/dos下的graphics库。
而CDC是这个函数库里定义的一个数据结构,GDI里面的函数需要用到它。
CDC里包含了一些相关联的信息。
比如调色板、画笔、刷子等。

这么说吧,刷子,笔,调色板放在你面前,你手上有个控制器,可以用来控制这些工具,而不必管刷子是刷鞋的还是刷衣服的,笔是毛笔还是画笔,只要你按下按钮,它们都能帮你实现
这就是CDC控制GDI的设备无关性

http://bbs.csdn.net/topics/40257864

GDI和CDC是什么相关推荐

  1. Windows GDI:CDC绘制矩形

    一. FillSolidRect 函数原型: void CDC::FillSolidRect(LPCRECT lpRect,COLORREF clr); 功能: 用指定颜色填充矩形区域 示例: COL ...

  2. 1.CDC绘图。包括加载图片,消去图片,设置图片一部分透明,不闪烁方式。

    CDC类简介:(摘抄自鸡啄米博客) CDC类是一个设备上下文类. CDC类提供了用来处理显示器或打印机等设备上下文的成员函数,还有处理与窗口客户区关联的显示上下文的成员函数.使用CDC的成员函数可以进 ...

  3. GDI DC通俗解释

    转自:http://zhidao.baidu.com/question/113334182.html 在GDI中,DC(Device context)是一个非常重要的概念. 有的书中,将DC翻译为设备 ...

  4. 简单的视频采集demo

    打算做个简单的聊天软件,其中一个我没做过的,就是视频采集. 在网上查了许久资料,终于搞清楚了dshow采集视频的流程 参考资料如下: https://msdn.microsoft.com/en-us/ ...

  5. GDI对象和CDC的使用方法(防止资源泄漏)

    1:CDC方面:        CDC有三种使用方式        一种是获得,包括GETDC和GETWINDOWDC,这种CDC是引用,使用完了一定要ReleaseDC,不释放就会这个引用过来的CD ...

  6. MFC里的GDI CDC HDC到底是什么?

    首先贴一张图: 可以看出来HDC就是windows设备上下文的句柄(话说设备上下文到底怎么理解?),CDC是MFC里面封装了它的类. ####### CDC还有很多派生: CDC和HDC可以互相转换 ...

  7. 【转载】gdi+ 内存泄漏

    [转载]http://issf.blog.163.com/blog/static/1941290822009111894413472/ 最近用GDI+实现了几个自定义控件,但是发现存在内存泄露问题 B ...

  8. GDI+编程说明及小结

    原文地址:http://blog.csdn.net/byxdaz/article/details/5972759 GDI+(Graphics Device Interface Plus图形设备接口加) ...

  9. MFC中的GDI绘图

    MFC中的GDI绘图 目录(?)[+] 什么是GDI 什么是DC MFC中与GDI有关的类 获取设备环境 设置坐标映射 创建绘图工具并选入DC 调用DC绘图函数绘图 三坐标映射实例 一.关于GDI的基 ...

最新文章

  1. 【怎样写代码】复杂对象的组装与创建 -- 建造者模式(三):建造者模式
  2. 基础搭建Hadoop大数据处理-编程
  3. linux的wc是什么命令,linux中的wc命令
  4. java libpcap,Linux下编译安装libpcap
  5. 详解Attention、Tacotron、WaveNet、LPCNet声码器等前沿方法
  6. android二级菜单ui,Android UI 之实现多级树形列表TreeView示例
  7. mouseleave mouseout时候悬浮框不应该消失的时候消失了 css 解决办法
  8. 协程与线程, 进程的区别
  9. 【华为云技术分享】《跟唐老师学习云网络》 - 我的网络概念
  10. 【ElasticSearch】Es 源码之 NamedWriteableRegistry 源码解读
  11. cas sso 整合记录
  12. PHP程序员测试题及答案
  13. Linux实用小工具
  14. ChartType 属性 excel图表类型
  15. FastReport.Net使用:[1]屏蔽打印对话框
  16. xposed框架安全模式_Android 系统上的 Xposed 框架中都有哪些值得推荐的模块?
  17. 认识机器视觉环形光源
  18. 选股策略你都会吗,这些选股策略你看懂了吗?
  19. Java-进阶:多线程1,2个月面试腾讯、B站、网易等11家公司的面经总结
  20. 我们肯定需要开发自己的BOL和GENIL

热门文章

  1. Kali之爆破和字典hydra学习笔记
  2. 3.1-3.31推荐文章汇总
  3. 嵌入式 Linux 入门(七、Linux 下的环境变量)
  4. Windows Server 2016 域控管理服务的安装
  5. 实习一个月后的第一篇日记(一)
  6. 什么是主域、子域_什么是子域?
  7. python青果教务系统抢课_名额不够,技术来凑,利用Python实现教务系统强制性抢课...
  8. currentstyle 织梦_织梦channel标签currentstyle样式无效不起作用
  9. 功能测试之合理使用测试辅助工具
  10. Python 添加根目录的三种方法