2-1-1 GDI
主要内容:介绍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的更多相关文章
- 超全面的.NET GDI+图形图像编程教程
本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...
- (转载)GDI+双缓冲
双缓冲在GDI+里可以有效的提高描画效率.改善显示的质量. 下面的代码是一个最简单的双缓冲的模板.可以根据需要,做简单的修改即可. Bitmap CacheImage( [Width], [Heigh ...
- (转载)解决GDI闪烁
一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的 ...
- 通过GDI+绘制 验证码
只为了记录下自己的学习历程,方便日后查看 现在开始言归正传,以下为其完整代码附上 using System; using System.Collections.Generic; using Syste ...
- 【VC++技术杂谈007】使用GDI+进行图片格式转换
本文主要介绍如何使用GDI+对图片进行格式转换,可以转换的图片格式为bmp.jpg.png. 1.加载GDI+库 GDI+是GDI图形库的一个增强版本,提供了一系列Visual C++ API.为了使 ...
- C# GDI绘制矩形框,鼠标左键拖动可移动矩形框,滚轮放大缩小矩形框
最近工作需要,要做一个矩形框,并且 用鼠标左键拖动矩形框移动其位置.网上查了一些感觉他们做的挺复杂的.我自己研究一天,做了一个比较简单的,发表出来供大家参考一下.如觉得简单,可路过,谢谢.哈哈. 先大 ...
- 【Windows编程】系列第五篇:GDI图形绘制
上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...
- GDI+ 笔记
1.GDI+模板 #include<windows.h> #include<GdiPlus.h> #include <time.h> #include <ma ...
- C# GDI+发生一般性错误(A generic error occurred in GDI+))
解决思路: 1. 因为 .net GDI+ 是对底层 的封装. 所以可以尝试用 Marshal.GetLastWin32Error();函数获得底层错误代码. try{ image.Save(file ...
- GDI与GDI+ 贴图性能对比
在做绘图相关工作,由于对显示绘制结果实时性有要求,筛选了GDI , 与GDI+ 贴图性能. 这里假设在内存中已绘制完成一张图片,现需求显示在控件上,同时,总是更新全部区域. GDI+ 实现 priva ...
随机推荐
- LA 5061 LCA tarjan 算法
题目大意: 给定所有点的权值都为0,给定一棵树以后,每次询问都要求给定两点 x , y 和一个权值w,要求x,y路径上所有点权值加上w,最后求出每一个节点的值 这里因为查询和点都特别多,所以希望能最后 ...
- 读者写者问题继 读写锁SRWLock
在<秒杀多线程第十一篇读者写者问题>文章中我们使用事件和一个记录读者个数的变量来解决读者写者问题.问题虽然得到了解决,但代码有点复杂.本篇将介绍一种新方法--读写锁SRWLock来解决这一 ...
- (转)ASP.NET(C#) 读取EXCEL ——另加解决日期问题
使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可. 一 在D盘创建excel文件test.xls: 二 将工作表Sheet1的内容读取到DataSet string ...
- hdu 1069
//Accepted 264 KB 0 ms //每种block只有三种方法,且每种放法至多放一次 //规定三条边的顺序后 //把所有的block按x递增排序,x相同则按y递增排序 //然后dp // ...
- objectARX判断当前坐标系
判断当前坐标系是WCS还是UCS 使用系统变量 WORLDUCS 请参见 用户坐标系 (UCS) 概述 (只读) 类型: 整数 保存位置: 未保存 初始值: 1 指示 UCS 是否与 WCS 相同 ...
- LoadImage函数问题
loadimage函数加载图片类型 Value Meaning IMAGE_BITMAP Loads a bitmap. IMAGE_CURSOR Loads a cursor. IMAGE_ICON ...
- 如何由Height Map生成Normal Map
转自:http://www.cnblogs.com/cxrs/archive/2009/11/01/1594155.html Nvidia和ATI都有相应的工具把Heightmap转成NormalMa ...
- Android res/raw vs assets
common: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. difference: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源I ...
- 极客DIY:使用Arduino制作一块开源手表
1 – 引言 首先让我们看下这个项目要考虑到的问题: .)使用100%Arduino兼容性硬件 .)保证存储器足够大可以装下大量的稍后会扩展的新内容 .)电量最少够1天用 .)BLE既是中枢设备又是外 ...
- Ubuntu虚机中SVN连接出错,虚机本机可正常CO,CIN,解决方法
Ubuntu虚机中SVN连接出错,虚机本机可正常CO,CIN,外面机器无法正常连接. 解决: 虚机换个IP即可正常连接,原因不明,有可能为公司网管对该IP做了某些限制. PS:VMware中只需将网络 ...