“图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形。正如您所认为的那样,GDI是Windows非常重要的部分。不只您为Windows编写的应用系统在显示视觉信息时使用GDI,就连Windows本身也使用GDI来显示使用者接口对象,诸如菜单、滚动条、图标和鼠标光标。”

“从程序写作者的观点来看,GDI由几百个函数呼叫和一些相关的数据型态、宏和结构组成。”

“Windows 98和Microsoft Windows NT中的图形主要由GDI32.DLL动态链接库输出的函数来处理。在Windows 98中,这个GDI32.DLL实际是利用16位GDI.EXE动态链接库来执行许多函数。在Windows NT中,GDI.EXE只用于16位的程序。”

“因为PC兼容机种上可以连接许多种不同的视讯设备,所以,GDI的主要目的之一是支持与设备无关的图形。Windows程序应该能够毫无困难地在Windows支持的任意一种图形输出设备上执行,GDI通过将您的程序和不同输出设备的特性隔离开来的方法来达到这一目的。”

“图形输出设备分为两大类:位映像设备和向量设备。大多数PC的输出设备是位映像设备,这意味着它们以图点构成的数组来表示图像,这类设备包括视讯显示卡、点阵打印机和激光打印机。向量设备使用线来绘制图像,通常局限于绘图机。”

“许多传统的计算机图形程序设计方式都是完全以向量为主的,这意味着使用向量图形系统的程序与硬件有着一定层次的隔离。输出设备用图素表示图形,但是程序与程序接口之间并不是用图素进行沟通的。您当然可以使用Windows GDI作为一个高阶的向量绘制系统,同时也可以将它用于比较低阶的图素操作。”

“Windows GDI和传统的图形接口语言之间的关系,就如同C和其它程序设计语言之间的关系一样。C以它在不同操作系统和环境之间的高度可移植性而闻名,然而C也以允许程序写作者进行低阶系统呼叫而闻名,这些呼叫在其它高级语言中通常是不可能的。正如C有时被认为是一种「高级汇编语言」一样,您可以认为GDI是图形设备硬件之间的一种高阶界面。”

“Windows内定使用图素坐标系统。大多数传统的图形语言使用「虚拟」坐标系,其水平和垂直轴的范围在0到32,767之间。虽然有些图形语言不让您使用图素坐标,但是Windows GDI允许您使用两种坐标系统之一(甚至依据实际度量衡的坐标系)。可以使用虚拟坐标系以便让程序独立于硬件之外,或者也可以使用设备坐标系而完全迎合硬设备提供的环境。”

“某些程序写作者认为一旦开始使用操作图素的程序设计方式,就放弃了设备无关性。我们在 上一章看到,这不完全是正确的,其中的诀窍是在与设备无关的方式中使用图素。这要求图形接口语言为程序提供一些方法来确定设备的硬件特征,并进行适当的调节。”

读 《Windows程序设计》(6)相关推荐

  1. Windows程序设计“圣经”

    Windows程序设计"圣经" 十年依旧畅销不衰的神品 传奇大师带你走入Windows编程圣殿 "Windows程序设计最举足轻重的书当然就是Charles Petzol ...

  2. Win32程序设计(Windows程序设计机理)

    Win32程序设计,又常常被叫做SDK/API编程,现在使用Win32的程序员确实已经很少了,主要是因为用win32写代码比用vc写起来还累,但是Win32编程常常又是非常有效率的,现在用的比较多的就 ...

  3. wi ndows ap i,windows程序设计第二章Unicode简介.doc

    windows程序设计第二章Unicode简介.doc Unico?de简介 在第一章中,我已经预告?,C语言中在?Micro?soft Windo?ws程序设?计中扮演着?重要角色的?任何部分都?会 ...

  4. Windows程序设计_Chap02_Unicode_学习笔记

    Windows程序设计_Chap02_Unicode_学习笔记 ――By: Neicole(2013.05.24) 01. 开篇 <Windows程序设计>的第2章,主要内容为Unicod ...

  5. 简单的Windows程序设计

    目录 1 创建图形界面应用 2 VC++数据类型 3 UNICODE字符集 4 MFC对话框应用程序 5 Windows 控件 6 消息驱动与消息映射 7 使用控件变量访问控制控件 8 用户自定义消息 ...

  6. Windows程序设计学习笔记(1):一个简单的windows程序

    <Windows程序设计>(第五版)(美Charles Petzold著) 1 #include<windows.h> 2 3 LRESULT CALLBACK WndProc ...

  7. Windows程序设计------字体不等宽引出的问题及其细节知识

    在写Windows程序设计的Typer程序时,我并不是在每一个使用HDC的地方都重新创建选中字体,而是在一开始选中之后,就没有再删除它,代码如图: 结果我的字体不是等宽字体! 起先我以为是没有设置WM ...

  8. 侯捷:搞Windows程序设计我们需要啥

    侯捷:搞Windows程序设计我们需要啥 如果你是一位资深的Windows程序员,相信你对Jeffrey Richter一定不会陌生,是不是有些崇拜和景仰?如果你是一位刚涉足这个领域的Windows程 ...

  9. Windows程序设计之创建窗口示例

    Windows程序设计书本上的创建窗口示例,手敲代码,拿出了show,记录一下而已~~~ 一.代码如下: #include <tchar.h> #include <windows.h ...

  10. c语言lnk1168无法打开exe,跪求大佬帮帮看看LINK : fatal error LNK1168: 无法打开 F:\windows程序设计\窗口\......

    马上注册,结交更多好友,享用更多功能^_^ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 运行的结果显示是这样: 1>------ 已启动生成: 项目: 窗口, 配置: Debug W ...

最新文章

  1. python-pcl官网 应用、特征、过滤Filter教程翻译
  2. WPF MVVM从入门到精通1:MVVM模式简介
  3. mysql主从修改系统参数步骤_mysql主从配置的参数配置与步骤_MySQL
  4. python 覆盖list_【Python妙招】gt;gt;gt;看腻了能不能换成别的啊……当然可以啦:)...
  5. golang.org/x/net包的安装方法
  6. 实用收藏Linux命令备忘
  7. 解决ionic 2载入速度慢的问题
  8. jquery 检测div宽度变化_jquery判断浏览器宽度小于指定值改变div样式
  9. 5.4(将英里转化位千米)
  10. Java素数怎么判断
  11. 高通qca-wifi移植
  12. 使用Gps获取经纬度
  13. 高速PCB设计怎么布局,资深工程师透露了其中的秘密,都是干货
  14. Kibana警报之索引连接器
  15. 制作网站及论坛的过程
  16. navicat运行db文件_navicat导入db文件_db文件转换为txt
  17. 腾讯云 轻量服务器 体验
  18. md5 java 实现_MD5加密的Java实现
  19. Parser-Free Virtual Try-on via Distilling Appearance Flows - 基于外观流提取的免解析器虚拟试穿
  20. 数学主题分类 - 中文(下)

热门文章

  1. 联想x100e linux,联想x100e怎么样 联想x100e配置介绍
  2. 线下融合百亿加码 天猫超级品牌日将打造品牌自己的双11
  3. 【综述】A Comprehensive Survey on Graph NeuralNetworks(3)
  4. 【华为OD机试真题 python】报文解压缩
  5. 【华为机试真题 Python实现】字符串简单数据解压缩
  6. 鹤壁异地公积金组合贷款攻略
  7. 响应式编程-Flux 发布订阅源码分析
  8. python协程gevent monkey的MonkeyPatchWarning 警告
  9. C语言基础教程_动态内存申请
  10. Codevs 2547 东方辉针城