主要内容:介绍Windows图形设备接口(GDI)及相关概念

  1.Windows图形设备接口(GDI)

    <1>Windows图形设备接口(GDI),是为与设备无关的图形设计的。

      所谓设备无关性,就是操作系统屏蔽了硬件设备的差异,

       因而设备无关性能使用户编程时无需考虑特殊的硬件设置。(建立一个中间层,进行一种对硬件的映射)

--------------------------------------------------------------------------------------------------

      GDI提供了一种特殊的机制来彻底隔离应用程序和不同输出设备的特性,

      这样就可以支持与设备无关的图形。

  

      可以把Windows GDI作为一个高层的矢量绘制系统来使用,

      也可以使用它来进行相对底层的像素操作

      也可以把GDI当成图形设备硬件的一种高层接口

      GDI包含有几百个函数,可以分成下面几大类:

        <1>获取(或建立)和释放(或销毁)设备环境的函数

         <2>获取设备环境信息的函数

         <3>绘图函数

         <4>获取和设置设备环境属性的函数

         <5>使用GDI"对象"的函数

--------------------------------------------------------------------------------------------------

  

    <2>GDI(Graphics Device Interface)

      负责系统与用户或绘图程序之间的信息交换,

      并控制在输出设备上显示图形或文字(通过GDI函数),

      是Windows系统的重要组成部分。

    <3>Windows利用GDI和Windows设备驱动程序来支持与设备无关的图形

      开发人员只需要建立与输出设备的关联,让系统加载相应的设备驱动程序即可。

      而设备驱动程序通常是由相应的设备厂商来提供的。

    <4>利用GDI进行与设备无关的绘图需要获得一个叫做DC的东西。 那么,DC是何物呢?

  2.GDI的一些相关基本概念

    <1>设备描述表

      设备环境的属性的集合

      是应用程序与输出设备之间的桥梁

      

    <2>为确保图形输出的设备无关性,

      Windows系统并不允许用户直接访问外设,

      而是使用Windows系统提供的统一的设备环境,叫做Device Context,即DC

      然后使应用程序和设备相连

--------------------------------------------------------------------------------------------------

      设备环境(也被简称为DC)实际上是GDI内部维护的一个数据结构。

      设备环境与特定的显示设备(例如显示器和打印机)相关联。

      对于视频显示,设备环境通常与屏幕上的一个特定的窗口相关联。

      因此也有DC相当于画板一说,但不能简单地说GDI是画笔,

      因为其实DC也可以当做是GDI的一部分。

      可以将GDI对象当做是画笔(如画笔、画刷等)

--------------------------------------------------------------------------------------------------

    <3>应用程序通过设备描述表的句柄来间接地存取设备描述表及其属性

      应用程序的每一次图形操作都参照设备描述表中的属性执行,从而达到设备无关性。

2-1-1 GDI的更多相关文章

  1. 超全面的.NET GDI+图形图像编程教程

    本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...

  2. (转载)GDI+双缓冲

    双缓冲在GDI+里可以有效的提高描画效率.改善显示的质量. 下面的代码是一个最简单的双缓冲的模板.可以根据需要,做简单的修改即可. Bitmap CacheImage( [Width], [Heigh ...

  3. (转载)解决GDI闪烁

    一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的 ...

  4. 通过GDI+绘制 验证码

    只为了记录下自己的学习历程,方便日后查看 现在开始言归正传,以下为其完整代码附上 using System; using System.Collections.Generic; using Syste ...

  5. 【VC++技术杂谈007】使用GDI+进行图片格式转换

    本文主要介绍如何使用GDI+对图片进行格式转换,可以转换的图片格式为bmp.jpg.png. 1.加载GDI+库 GDI+是GDI图形库的一个增强版本,提供了一系列Visual C++ API.为了使 ...

  6. C# GDI绘制矩形框,鼠标左键拖动可移动矩形框,滚轮放大缩小矩形框

    最近工作需要,要做一个矩形框,并且 用鼠标左键拖动矩形框移动其位置.网上查了一些感觉他们做的挺复杂的.我自己研究一天,做了一个比较简单的,发表出来供大家参考一下.如觉得简单,可路过,谢谢.哈哈. 先大 ...

  7. 【Windows编程】系列第五篇:GDI图形绘制

    上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...

  8. GDI+ 笔记

    1.GDI+模板 #include<windows.h> #include<GdiPlus.h> #include <time.h> #include <ma ...

  9. C# GDI+发生一般性错误(A generic error occurred in GDI+))

    解决思路: 1. 因为 .net GDI+ 是对底层 的封装. 所以可以尝试用 Marshal.GetLastWin32Error();函数获得底层错误代码. try{ image.Save(file ...

  10. GDI与GDI+ 贴图性能对比

    在做绘图相关工作,由于对显示绘制结果实时性有要求,筛选了GDI , 与GDI+ 贴图性能. 这里假设在内存中已绘制完成一张图片,现需求显示在控件上,同时,总是更新全部区域. GDI+ 实现 priva ...

随机推荐

  1. JavaScript中Date的一些细节

    对于开发人员来说,Date有时候或许会很重要,我们可以通过new Date()来创建一个日期对象.例如: var start = new Date(), //获取当前时间 today = new Da ...

  2. 【转发】Linux下清除系统日志方法

    摘要:相信大家都是用过Windows的人.对于Windows下饱受诟病的各种垃圾文件都需要自己想办法删除,不然你的系统将会变得越来越大,越来越迟钝!windows怎么清理垃圾相信大家都知道的,那么li ...

  3. 【kate总结】matlab调用opencv总结

    正常情况下,编写好matlab调用opencv的代码. 1.输入   MEX XX.CPP(所有的mex都要编译) 2.将生成的.mexw64 放到要调用的文件夹下即可 出错总结: 本人写的matla ...

  4. vmware 下的linux的host only上网配置

    1.首先在Vm中将网络设置为Host-only. 2.在windows下,打开网络邻居,会见到如下界面,其中负责联网的是本地连接,Vm1是host-only连接,VM2是Nat连接方式,首先将VM1. ...

  5. Tomcat的目录结构(二)

    一.Tomcat的目录结构 bin:启动和关闭Tomcat的bat文件 conf:配置文件 server.xml:配置和server相关的信息,比如:Tomcat启动的端口号,配置Host,配置Con ...

  6. Android布局---相对布局

    Android布局分为五大类:相对布局.线性布局.表格布局.帧布局.网格布局 相对布局 语法格式: <RelativeLayout xmlns:android="http://sche ...

  7. stm32 dac库函数解读

    1.简述: 12位数字输入,电压输出,DAC可以配置为8位或12位模式.有2个输出通道.在双DAC模式下,两个通道可以独立地工作. 特殊功能: 噪声波形生成,三角波形生成,外部触发转换,双DAC同时或 ...

  8. 需求分析(NABC)

    团队开发需求分析 队长:郭庆樑 成员:林彦汝.张金 经过讨论,我们决定做一个基于Windows的小游戏——躲避小球. 把这个项目实现,组长强调有两点: 1.可实现:2.有用户. 可以说,我们最大的特点 ...

  9. Linux物理内存相关数据结构

    节点:pg_data_t typedef struct pglist_data { zone_t node_zones[MAX_NR_ZONES]; zonelist_t node_zonelists ...

  10. 【LEETCODE OJ】Copy List with Random Pointer

    Problem link: http://oj.leetcode.com/problems/copy-list-with-random-pointer/ Deepcopy a linked list ...