图形设备接口(GDI)
图形设备接口(GDI,Graphics Device Interface)负责在显示器和打印机上显示图形。GDI 是由几
百个函数和一些相关的数据类型、宏和结构构成的。
Windows 98/NT 中的图形主要由GDI32.DLL 动态链接库输出的函数来处理。在Windows 98 中,
这个GDI32.DLL 实际是利用16 位GDI.EXE 动态链接库来执行函数。在Windows NT 中,GDI.EXE
只用于16 位的程序。
因为PC 兼容机种上可以连接许多种不同的图形图像设备,所以GDI 的主要目的之一是支持与设
备无关的图形。Windows 程序应该能够毫无困难地在Windows 支持的任意一种图形输出设备上执行,
GDI 通过将程序和不同输出设备的特性隔离开来的方法达到这一目的。
当用户想在一个图形输出设备上绘图时,首先必须获得一个设备内容的句柄。将句柄传回给程序
时,Windows 就给了用户使用设备的权限,然后在GDI 函数中将这个句柄作为一个参数,用来标识在
其上进行绘图的设备。
设备内容中包含许多确定GDI 函数如何在设备上工作的属性,这些属性允许传递给GDI 函数的
参数只包含起始坐标或者尺寸信息,而不必包含Windows 在设备上显示对象时需要的所有其他信息。
例如,当调用TextOut 时,只需要在函数中给出设备内容句柄、起始坐标、文字和文字的长度,而不
必指定字体、文字颜色、文字后面的背景色彩以及字符间距。因为这些属性都是设备内容的一部分。
设备内容
Windows 提供了几种取得设备内容句柄的方法。如果在处理一个消息时取得了设备内容句柄,应
该在退出窗口函数之前释放它。一旦释放了句柄,它就不再有效了。但是对于打印机设备内容句柄,
规则就没有这么严格。
最常用的取得并释放设备内容句柄的方法是,在处理WM_PAINT 消息时,使用BeginPaint 和
EndPaint:
hdc = BeginPaint (hwnd, &ps) ;
…………
…………
EndPaint (hwnd, &ps) ;
图形设备接口(GDI)的更多相关文章
- C++ GDI图形设备接口
一.概念 1. GDI:(Graphics Device Interfase)图形设备接口,是一个应用程序与输出设备之间的中介. 一方面,GDI向应用程序提供一个与设备无关的编程环境,另一方面,它又以 ...
- OSG图形设备接口GraphicsContext
1.图形设备与相机 在Camera类的成员函数中,setGraphicContext()函数的工作是设置相机对应的图形设备对象,换句话说,下面要介绍的GraphicsContext类就是图形设备对象的 ...
- 第四章 Windows的图形设备接口及Windows绘图 P83 4-6
实验(实习)名称 图形程序设计及其应用 实验(实习)日期 一.实验目的 1.熟悉图形设备接口的概念及其应用. 二.实验内容及步骤 实验任务 1.熟悉基于图形应用的程序设计: 2.掌握刷新技术及其 ...
- Windows的图形设备接口与Windows绘图
本次学习目标 理解DC, 映像模式, 坐标系统, 窗口和视口; 学习获取绘图工具(画笔/画刷)的句柄, 设置颜色, 能定义映像模式; 会使用常用的绘图函数. 编写程序: 在屏幕上出现一个圆心沿正弦曲线 ...
- MFC GDI绘图基础
一.关于GDI的基本概念 什么是GDI? Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上. 在Wind ...
- GDI编程
图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI函数调用),并将它们传给相应的设备驱动程序,完成特定于硬件的输出,象打印机输出和屏幕输出.GDI负责Wind ...
- GDI编程小结
图形设备接口(GDI)是一个可运行程序,它接受Windows应用程序的画图请求(表现为GDI函数调用),并将它们传给对应的设备驱动程序,完毕特定于硬件的输出,象打印机输出和屏幕输出.GDI负责Wind ...
- VC++学习之GDI概述
VC++学习之GDI概述 图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI函数调用),并将它们传给相应的设备驱动程序,完成特定于硬件的输出,象打印机输出和屏 ...
- MFC绘图相关GDI工具对象和函数介绍
在利用MFC进行界面编程时,除了需要熟悉各种类型控件的操作外,还会经常遇到图形绘制和显示的问题,比如时频分析界面.图像处理界面等.处理这些软件界面开发问题时,不可避免地需要用到一系列GDI工具对象和相 ...
随机推荐
- Saltstack系列1:安装配置
安装 安装EPEL作为安装Ansible的yum源(CentOS6.4) rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release ...
- Dell R410 broadcom网卡驱动更新失败
问题描述: 最近遇到一个Dell R410 broadcom网卡驱动更新失败的问题.从官网上下载的驱动在安装的过程中都会自己回滚回来,很是困惑. 尝试解决: Dell官网现在提供的驱动一般最少有两种格 ...
- MySQL key/value存储方案(转)
需求 250M entities, entities表共有2.5亿条记录,当然是分库的. 典型解决方案:RDBMS 问题:由于业务需要不定期更改表结构,但是在2.5亿记录的表上增删字段.修改索引需要锁 ...
- MyEclipse背景色不伤眼+字体大小调节+代码格式化不换行
- 避免HTML5六种错误用法
一.不要使用section作为div的替代品 人们在标签使用中最常见到的错误之一就是随意将HTML5的<section>等价于<div>--具体地说,就是直接用作替代品(用于样 ...
- linux命令(13) 删除指定文件夹下后缀名相同的文件
方法一: find 目录 -name "*.abc" | xargs rm命令有点危险,可以先执行前半段,看看是不是你要删除的文件, 然后再整条执行 方法二:find . -nam ...
- 加入ScrollView后OnGestureListener无效的解决办法
android中,ViewFlipper+OnGestureListener可以实现左右滑动效果. 但是在ViewFlipper加上了ScrollView就悲剧了,左右滑动事件无效了…… 这里其实只需 ...
- queue 与 vector
优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序 每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储. 例如:我们常用的操作就 ...
- 跨浏览器复制神器 ZeroClipboard 2.x快速入门详解
有些时候,我们希望让用户在网页上完成某个操作就能自动将指定的内容复制到用户计算机的剪贴板中.但是出于安全原因,大多数现代浏览器都未提供通用的剪贴板复制接口(或即便有,也默认被禁用).只有IE浏览器可以 ...
- jquery实现点击页面其他地方隐藏指定元素
代码实例如下: <!DOCTYPE html><html><head><meta charset=" utf-8"><meta ...