Windows编程基础- 设备对象属性

news/2024/7/8 4:48:26 标签: windows, 编程, 图形, null, 工作, system

源地址:http://www.2cto.com/kf/201008/54515.html

设备对象属性决定着绘图方式,当使用GDI函数绘图时,所绘制的图形和文本的颜色、大小和位置等由设备对象的当前属性决定,应用程序可以使用GDI函数改变设备对象的当前属性。本章介绍设备对象的一些主要属性和用于改变这些属性的有关函数,其它的设备对象属性在后面的章节中陆续介绍。


3.1、图形设备接口
  在第二章,我们一直在使用图形设备接口( GDI),GDI的主要目标之一是支持在输出设备(例如显示器、打印机)上建立与设备无关的图形输出。Windows的图形大部分是由GDI.EXE(Windows系统的一个模块,称GDI模块)中的函数处理的。GDI模块通过调用在不同设备驱动程序模块中的例程来控制输出设备。例如,显示设备驱动程序用于访问与视频显示器有关的硬件。通过GDI,Windows可以确定驱动程序能够进行什么工作,并且由于应用程序只与GDI打交道。这样,GDI通过将应用程序与不同的输出设备隔离,使应用程序可以在支持Windows的任何图形输出设备上工作
  图形输出设备可以分为两组:光栅设备和矢量设备。光栅设备将图象表示为点(象素)的图案。这类输出设备包括显示设备、点阵打印机和激光打印机。向量设备用线段来绘制图象,例如绘图仪。Windows的GDI是一种隔离了硬件具体特性的图形语言。虽然输出设备用象素来表示图形,但GDI却可以被用作一个高级的向量绘图系统,也可以被用来进行较低级的象素操作。
  在编写Windows应用程序时,程序员不必为颜色过分担心,如果在应用程序中使用的一种颜色不能被该显示器所表示,Windows或为应用程序选择一种最直接的纯颜色(显示设备可以表示的颜色),或通过将几种纯颜色相混合来表示这种颜色。当在彩色显示器上开发的程序运行在单色显示器上时,Windows将使用灰度来表示颜色。应用程序也可以在程序中确定输出设备的有关特性,例如,可表示的颜色数目、设备的显示区的尺寸等,以便最大限度地发挥硬件的能力。

3.2、设备对象属性
  设备对象具有许多决定GDI函数在设备对象上如何工作的当前属性。例如,在使用函数TextOut()时,只需要在函数中说明设备对象的句柄、绘制字符的起始坐标、文本和文本长度,而不用说明字体、文本颜色、背景颜色和字符间距等,因为这些特征由设备对象的属性决定。每种设备对象都赋有缺省的属性,可以使用GDI函数改变这些属性中的某一个。表3-1给出了显示设备各个属性的缺省值,当使用GetDC()和BeginPaint()等函数初次得到一个显示设备对象时,该对象的属性具有缺省值。

属性缺省值
视区原点(0, 0)
视区范围(1, 1)
窗口原点(0, 0)
窗口范围(1, 1)
背景颜色白色
背景方式OPAQUE
位图任意值
刷子WHITE_BRUSH
刷子原点(0, 0)
裁剪区用户区/无效矩形区/子窗口区
调色板DEFAULT_PALETTE
 
属性缺省值
笔的当前位置(0, 0)
笔的颜色BLACK_PEN
文本颜色
设备的原点用户区的左上角
绘图方式R2_COPYPEN
字体SYSTEM_FONT
字符间距0
映射方式MM_TEXT
多边形填充方式ALTERNATE
相对一绝坐标ABSOLUTE
缩放方式BLACKONWHITE

  在本章以后的各节中将介绍其中一些设备属性,其它属性在以后章节中介绍。

3.3、设备坐标系
  为在输出设备上定位和绘制图形对象,必须引入一种坐标系。Windows的各种不同类型设备所使用的坐标称为设备坐标。它们使用笛卡尔坐标系,在这些设备坐标系中,单位都以象素的个数表示(称为设备单位)。x轴上的值自左向右增加,y轴上的值自顶向下增加,见图3-1。

图3-1 Windows的设备坐标系

  本节以视频显示设备为例介绍Windows的设备坐标系,其中的许多内容也适合用于象打印机等硬拷贝输出设备。
  在Windows环境中,视频显示设备是一个共享设备,即在同一时刻,显示设备上可以同时显示多个应用程序的输出信息。为了保护一个程序显示的信息不被其他程序破坏,Windows通过将显示区看作不同的设备对象来限制应用程序输出信息的范围。
  一个应用程序可获取三种不同的显示设备对象句柄,每种句柄所标识的设备对象代表屏幕上的不同区域。我们可以将这三个句柄所标识的对象视作三个不同的抽象显示设备,都带有如图3-1所示的设备坐标系,但对不同的抽象设备,坐标原点不一样的。这样,当使用相同的起始坐标而使用不同的设备对象句柄调用GetDC函数(例如TextOut())进行绘图时,信息显示的位置不一样。
  第一抽象设备是用户区对象,它的坐标原点在用户区的左上角。定位该区域的设备坐标系称为用户区坐标系。使用函数GetDC()或BeginPaint()得到的句柄是标识用户区的句柄。当使用该句柄标识该区域的句柄作为GDI函数的参数时,GDI函数所使用的坐标值是相对于用户区坐标系。
  第二个抽象设备是全窗口对象。它包括标题栏、选单、滚动杆和窗口框架等。定位这个区域的坐标系称为全窗口坐标系,它的原点的左上角。使用函数GetWindowsDC()可以获得该设备对象的句柄,然后通过该句柄使用全窗口坐标系在该区域中绘图。应用程序一般不在这个区域中绘图。
  第三个抽象设备是整个屏幕对象,其坐标原点在屏幕的左上角,定位该区域的设备坐标系称为屏幕坐标系。使用语句:

   HDC hDC = CreateDC("DISPLAY", NULL, NULL, NULL);

可以获得该设备对象的句柄,使用该句柄的GDI函数所使用的坐标是相对于屏幕坐标系。
  这三种坐标系方便了程序在不同的区域绘制图形的需要。例如,由于使用用户区坐标系,即使窗口在屏幕上被移动到其他位置,但用户区中显示的信息相对于用户坐标系而言其坐标值不变。
  使用坐标系,解决了显示对象的定位的问题的。但以象素单位所建立的坐标系不符合用户(或程序员)的习惯,而且在不同分

http://www.niftyadmin.cn/n/1436337.html

相关文章

tar 的使用方法。

.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)---------------------------------------------.gz解压1:gunzip FileName.gz解压2&…

Wave文件的组织结构

操作Wave文件,先了解Wave文件的组织结构 WAVE文件由"块"组成。块的基本结构如下: ------------------------------ 偏移量 名称 字节数 类型 ------------------------------ 00 块标志 4 字符 04 块长度…

添加修改sa用户 授权的总结

1、更改登录方式为混合验证方式 操作步骤为: 1. 打开企业管理器,依次展开服务器组,用右键单击软件使用的服务器。 2. 在弹出的快捷菜单,执行“属性”命令,出现“SQL Server属性”对话框。 单击…

COM原理及应用

COM原理及应用----COM特性 2009-01-14 10:19:25| 分类:技术技巧 |字号 订阅 COM原理及应用----COM特性1、面向对象系统的三个最基本的特性 封装性、多态性、重用性。 2、COM特性的概述 COM对象的封装特性是很彻底的,所有的对象状态信息必须通…

C++中的四种强制类型转换的区别 [转]

使用标准C的类型转换符&#xff1a;static_cast、dynamic_cast、reinterpret_cast、和const_cast。 1 static_cast 用法&#xff1a;static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型&#xff0c;但没有运行时类型检查来保证转换的安…

astyle是一个常用的开放源码工具 in vs 2008

astyle是一个常用的开放源码工具。它可以方便的将程序代码格式化成自己想要的样式而不必人工修改。本来嘛&#xff0c;作为高等生物应该优先去做一些智慧的事情&#xff0c;而不是把时间消耗在机器可以完美完成的事情上。 想要立刻开始&#xff1f;请先去主页http://sourcefor…

使用ssh-keygen命令的用法[转]

ssh-keygen - 生成、管理和转换认证密钥通常使用: [b]ssh-keygen -i -f 公密匙名 >> authorized_keys[/b] 语法详细介绍[code] ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [-f output_keyfile]ssh-keygen -p [-P old_passphrase] [-N new_pass…

vs2008 vc项目 文件目录的管理

最终我还是找到了最合理的解决方法。 实际上VS提供分文件目录管理&#xff0c;只是我们选择的模式不同。应该选择“Show All Files”模式。即可自由建立文件层了。。。我实在是太菜鸟了 详情&#xff0c;请看我另一篇日志&#xff1a;http://qimo601.iteye.com/admin/blogs/1…