06图形设备接口GDI基本概念

合集下载

GDI基础

GDI基础
面向对象程序设计II
预备知识
GDI(Graphics Device Interface) DC(Device Context)
本章授课内容
GDI概述 设备环境(Device Context) 内存设备(Memory Device Context)
GDI概述
GDI概述
GDI是图形设备接口(Graphics Device Interface或Graphical Device Interface)的 简称,它是微软公司的视窗操作系统(Microsoft Windows)的三大内核部件(也称“子系统”)之一。 GDI主要任务是负责系统与绘图程序之间的信息交换, 处理所有Windows程序的图形输出。 利用GDI所提供的众多函数就可以方便的在屏幕、打印 机及其它输出设备上输出图形,文本等操作。 GDI的出现使程序员无需要关心硬件设备及设备驱动, 就可以将应用程序的输出转化为硬件设备上的输出,实 现了程序开发者与硬件设备的隔离,大大方便了开发工 作。
设备环境是windows内部使用的数据结构,它定义了 GDI函数在显示设备特定区域的工作方式。对视频显示 器来说,设备环境代表屏幕上的一块区域。 要想向某个区域输出文字或者绘制图形,必须先取得 代表此区域的设备环境句柄,以此句柄为参数调用的 GDI函数都是对该区域的操作。
case WM_PAINT: { char szText[] = “hello world!”; PAINTSTRUCT ps; hdc = ::BeginPaint(hwnd, &ps); ::TextOut(hdc,10,10,szText, strlen(szText)); ::EndPaint(hwnd,&ps); return 0; }

gdi名词解释

gdi名词解释

gdi名词解释1.汽车发动机技术:GDI是指汽车燃油直喷燃烧技术,是汽油直喷的英文缩写。

该技术的特点是低油耗,高功率和扭矩。

GDI技术可以提高内燃机20%的燃油效率。

采用直喷技术后,燃油不是以蒸汽的形式,而是以细小的雾滴形式进入气缸。

这意味着当燃料液滴吸收热量并变成可燃蒸汽时,它们实际上冷却了发动机气缸。

这种冷却作用降低了发动机对辛烷值的需求,因此可以提高其压缩比和燃烧效率。

2.计算机术语:GDI是图形设备接口的缩写。

它的主要任务是在系统和绘图程序之间交换信息,并处理所有Windows程序的图形和图像输出。

随着GDI的出现,程序员可以将应用程序的输出转化为硬件设备的输出和合成,而无需关心硬件设备及其正常的驱动程序,从而实现了程序开发人员与硬件设备的隔离,大大方便了开发工作。

3.个人资本:GDI已经成为许多华尔街经济学家衡量经济形势的新指标。

GDI(国内总收入,GDI)的定义是指一个国家或地区所有居民单位在一定时期内所赚取的全部最终产品和劳务的市场价值。

4.生物学术语:即GDI鸟苷核苷酸分解抑制剂,它与细胞中的非活性形式的小GTP酶如Rab和Rho结合。

与GDI小GTP酶结合,既能阻止GDP转化为GTP,即维持GTP酶的失活状态,又能阻止GTP 酶定位于膜上,而这些GTP酶往往在膜上发挥作用。

5.社会学术语:GDI指的是性别发展指数,用来衡量一个国家公民的整体道德水平。

性别发展指数使用的指标主要有三个:一是按性别划分的预期寿命,二是按性别划分的受教育程度,三是调整两性的实际收入。

这三个指标主要用于评价性别发展的程度。

6.游戏中的虚拟组织:GDI是全球防御倡议。

它是由美国EA公司发行的一款针对个人电脑的即时战略游戏,由世界上大多数发达国家集结而成的军事化国际联盟。

gdi+原理

gdi+原理

GDI (Graphics Device Interface) 是一种图形设备接口,它提供了一组函数和数据结构,用于在计算机屏幕上绘制图形和文本。

GDI 的工作原理可以简单概括如下:
1. 设备无关性:GDI 提供了一套抽象的图形操作接口,使得应用程序不需要关心底层硬件的差异。

它可以在不同类型的图形设备(如显示器、打印机)上执行相同的绘图操作。

2. 句柄管理:GDI 使用句柄来标识各种图形对象,例如窗口、画刷、字体等。

应用程序通过创建和使用这些句柄来操作图形对象。

GDI 负责管理这些句柄,包括分配、释放和查询对象。

3. 绘图操作:GDI 提供了一系列函数,用于在设备上进行绘图操作。

这些函数包括绘制线条、填充区域、绘制文本等。

应用程序可以根据需要调用这些函数来实现所需的图形效果。

4. 坐标系统:GDI 使用一个坐标系统来确定图形和文本的位置。

通常,坐标原点位于设备的左上角,水平向右为正,垂直向下为正。

应用程序可以使用坐标系统来定位和变换图形对象。

5. 双缓冲技术:为了避免绘图时的闪烁和不流畅现象,GDI 使用双缓冲技术。

在内存中创建一个临时的图像缓冲区,所有的绘图操作先在缓冲区中进行,然后再将整个缓冲区一次性地绘制到屏幕上,从而实现平滑的图形显示。

总之,GDI 是一个用于绘制图形和文本的图形设备接口,它提供了设备无关性、句柄管理、绘图操作、坐标系统和双缓冲等特性,使得应用程序可以方便地操作图形对象并实现所需的图形效果。

1。

图形设备接口及绘图

图形设备接口及绘图

设备驱动层负责与具体的图形设 备进行交互,将GDI核心层发送的 图形指令转换为设备可以理解的 指令,并控制设备进行渲染。
GDI的结构主要包括三个层次:应 用程序接口层、GD负责将应用程序的图形 操作转换为相应的图形指令,并 管理图形设备的资源,如内存、 颜色表等。
技术创新方向预测
跨平台兼容性增强
随着不同操作系统和设备的普及,图形设备接口将更加注重跨平 台兼容性,实现无缝的跨平台用户体验。
实时渲染技术优化
借助更强大的计算能力和先进的算法,图形设备接口将进一步提高 实时渲染的质量和效率。
AI驱动的智能图形处理
结合人工智能技术,图形设备接口将实现更智能的图形处理,包括 自动优化、智能缩放、场景识别等功能。
图形设备接口及绘图
目录
• 图形设备接口概述 • 图形设备接口原理及结构 • 绘图基本操作与功能 • 高级绘图技巧与方法 • 图形设备接口在应用领域中的实践 • 图形设备接口未来发展趋势与挑战
01 图形设备接口概述
定义与功能
定义
图形设备接口(Graphics Device Interface,GDI)是一种应用程序编 程接口(API),用于在计算机图形环 境中表示图形和文字。
标准
为了规范GDI的开发和使用,国际标准化组织(ISO) 和国际电工委员会(IEC)等制定了一系列相关标准, 如OpenGL、DirectX等。这些标准为不同平台和设 备上的GDI实现提供了统一的接口和规范,促进了 GDI的互操作性和可移植性。
02 图形设备接口原理及结构
工作原理简介
图形设备接口(GDI)是计算机图形学中的一个重要概念, 它提供了一种与图形硬件设备进行交互的抽象层。
图像处理
反走样技术

图形设备接口

图形设备接口

图形设备接口图形设备接口(GDI)提供了一系列的函数和相关的结构,应用程序可以使用它们在显示器、打印机或其他设备上生成图形化的输出结果。

使用GDI函数可以绘制直线、曲线、闭合图形、路径、文本以及位图图像。

所绘制的图形的颜色和风格依赖于所创建的绘图对象,即画笔、笔刷和字体。

你可以使用画笔来绘制直线和曲线,使用笔刷来填充闭合图形的内部,使用字体来书写文本。

应用程序通过创建设备环境(DC),可以直接向指定的设备进行输出。

设备环境是一个GDI管理的结构。

其中包含一些有关设备的信息,比如它的操作方式及当前的选择。

应用程序可使用设备环境函数来创建DC。

GDI将返回一个设备环境句柄,在随后的调用中,该句柄用于表示该设备。

例如,应用程序可以使用该句柄来获取有关该设备性能的一些信息,诸如它的类型(显示器、打印机或其他设备),它的显示界面的尺寸和分辨率等。

应用程序可以直接向一个物理设备进行输出,比如显示器或打印机;也可以向一个“逻辑”设备进行输出,比如内存设备或元文件。

逻辑设备向应用程序所提供的保存输出结果的格式,可以很容易地将其发送到物理设备上。

一旦应用程序将输出结果记录到了一个元文件中,那么该元文件就可以被使用任意多次,并且该输出结果可以被发送到任意多个物理设备上。

应用程序可以使用属性函数来设置设备的操作方式和当前的选择。

操作方式包括文本和背景颜色,混色方式(也称为二元光栅操作,用于确定画笔或笔刷的颜色与绘图区域现有的颜色如何进行混色),映射方式(用于指定GDI如何将应用程序所用的坐标映射到设备坐标系统上)。

当前的选择是指绘图时使用哪个绘图对象。

图形设备接口函数包括以下几类:位图函数(Bltmap)位图是一个图形对象,可将图像作为文件进行创建、处理(比例缩放、滚动、旋转和绘制)和存储。

位图函数提供了一系列处理位图的方法。

笔刷函数(Brush)笔刷是一种绘图工具,Win32应用程序可使用它绘制多边形、椭圆形和路径的内部。

CDC绘图

CDC绘图

图形设备接口一、GDI、DC的概念1.GDI:(Graphics Device Interfase)图形设备接口,是一个应用程序与输出设备之间的中介。

一方面,GDI向应用程序提供一个与设备无关的编程环境,另一方面,它又以设备相关的格式和具体的设备打交道。

user32.dll2.DC:(Device Context)设备描述表,是一种Windows数据结构。

包括了与一个设备的绘制属性相关的信息。

所有的绘制操作通过一个设备描述表进行,绘制线条、形状和文本的Windows API 函数都与DC有关。

二、在Windows Application程序中画线1.定义两个全局变量用于记录鼠标按下的(x,y)坐标。

int nOrginX;int nOrginY;2.响应鼠标按下和鼠标抬起的消息:在Swich中加入case WM_LBUTTONDOWN:case WM_LBUTTONUP:3.在鼠标按下时记录鼠标按下的(x,y)坐标,查MSDN得知WM_LBUTTONDOWN lParam的低字存放x坐标,高字存放y坐标,将其取出存入nOrginX,nOrginY。

case WM_LBUTTONDOWN:nOrginX=lParam & 0x0000ffff;nOrginY=lParam >> 16 & 0x0000ffff;break;4.在鼠标抬起时画线:case WM_LBUTTONUP:HDC hdc;hdc=GetDC(hwnd);PAINTSTRUCT ps;::MoveToEx(hdc,nOrginX,nOrginY,NULL);::LineTo(hdc,LOWORD(lParam),HIWORD(lParam) );::ReleaseDC(hwnd,hdc);三、在MFC程序中画线:1.在CxxxView(其中xxx是你的工程名字)中响应鼠标按下和鼠标抬起的消息(因为只有CxxxView中才能接收到鼠标消息):使用ClassWizard加入WM_LBUTTONDOWN,WM_LBUTTONUP的消息响应函数OnLButtonDown, OnLButtonUp。

GDI GDI 从入门到精通-第一讲资料

GDI GDI 从入门到精通-第一讲资料

} PAINTSTRUCT;
7
通过CreateCompatibleDC 创建兼容内存DC 通过调用CreateCompatibleDC函数来创建与目标DC兼容的内 存DC。一般用于解决界面的闪烁问题。 代码片段: { HDC hMemDC = ::CreateCompatibleDC(hDest); //其他的绘图操作代码 … ::BitBlt(hDest,x,y,w,h,hMemDC,0,0,SRCCOPY); … ::DeleteDC(hMemDC); }
23
Bitmap的结构
BMP文件总体上由4部分组成,分别是位图文件头、位图信息 头、调色板和图像数据。
24
Bitmap的结构
位图文件头包含了图像类型、图像大小、图据存放地址和两个保 留未使用的字段。 typedef struct tagBITMAPFILEHEADER { WORD bfType; //图像类型 DWORD bfSize; //图像大小 WORD bfReserved1; //保留未使用的字断 WORD bfReserved2; //保留未使用的字断 DWORD bfOffBits; //图像数据存放地址 } BITMAPFILEHEADER
4
通过GetDC函数 来获得相应窗口的HDC
GetDC函数适合在窗口现有图形的基础上进行绘制。 代码段: { HDC hDC = ::GetDC(hWnd); //其他的绘图操作代码 …… ::ReleaseDC(hWnd,hDC); } GetDC中传入的参数hWnd是窗口的句柄,它返回和这个窗口相关的DC
//亮灰色画刷
//灰色画刷 //暗灰色画刷 //黑色画刷 //空画刷
#define HOLLOW_BRUSH

图形设备接口培训课件

图形设备接口培训课件

图形设备接口培训课件概述本课程旨在介绍图形设备接口(Graphics Device Interface,GDI)的基本概念、功能和使用方法。

GDI是一种用于在Microsoft Windows操作系统中绘制图形和文字的API。

通过学习本课程,您将了解GDI的基本原理、常用功能以及如何使用GDI在Windows应用程序中创建绘图和文字。

目录•GDI简介•GDI对象•绘制图形–直线和曲线–矩形和圆角矩形–椭圆和圆–多边形•绘制文字•图像操作•设备上下文•GDI+和Direct2DGDI简介GDI是Windows操作系统中的图形设备接口,它提供了一系列的函数和数据结构,用于在屏幕上绘制图像和文字。

GDI使用设备上下文(Device Context)来管理图形输出的相关信息,包括画笔、画刷、字体等。

在使用GDI之前,需要先创建一个设备上下文,并将其与屏幕或打印机连接起来。

GDI对象在GDI中,图形元素和属性都被封装为对象。

常用的GDI对象包括画笔、画刷、字体和位图等。

这些对象可以通过GDI的函数进行创建、设置属性和使用,也可以通过GDI的函数进行销毁。

绘制图形GDI提供了多种绘制图形的函数,可以绘制直线、曲线、矩形、椭圆、圆和多边形等图形。

绘制图形的过程通常包括选择绘图对象、设置绘制属性和调用相应的绘制函数。

直线和曲线GDI提供了MoveToEx和LineTo函数用于绘制直线。

MoveToEx函数用于设置直线的起始点,LineTo函数用于设置直线的终点并绘制直线。

GDI还提供了绘制曲线的函数,如Polyline、PolyBezier和PolyBezierTo等。

这些函数可以根据给定的点坐标绘制连接它们的曲线。

矩形和圆角矩形GDI提供了Rectangle函数用于绘制矩形。

这个函数接受矩形的左上角和右下角坐标作为参数,并在指定的区域内绘制一个矩形。

RoundRect函数可以绘制带有圆角的矩形。

这个函数除了接受矩形的左上角和右下角坐标外,还接受一个椭圆的宽度和高度作为参数,用于指定圆角的大小。

GDI原理

GDI原理

GDI原理GDI,全称为图形设备接口(Graphics Device Interface),是一种用于在Windows操作系统中绘制图形的技术。

它提供了一种将图形显示在屏幕上的标准方法,同时也是Windows应用程序与显示设备之间通信的桥梁。

在本文中,我们将深入探讨GDI的原理及其工作方式。

首先,GDI通过使用设备无关的图形对象(如画笔、画刷、字体等)来描述图形。

这些图形对象可以在不同的输出设备上进行绘制,而无需对应用程序进行修改。

这种设备无关性使得GDI成为了一种非常灵活的图形绘制技术。

其次,GDI通过使用设备上下文(Device Context,简称DC)来实现图形的绘制。

设备上下文是一个与设备相关的数据结构,它包含了绘制图形所需的各种参数和信息。

应用程序可以通过GDI函数来获取设备上下文,并在其上进行图形的绘制操作。

另外,GDI还提供了一系列的绘图函数,用于在设备上下文中进行各种图形的绘制操作。

这些函数包括了直线绘制、矩形绘制、圆形绘制、文本输出等功能。

通过调用这些函数,应用程序可以实现各种复杂的图形绘制效果。

除此之外,GDI还支持图形的变换和组合操作。

应用程序可以通过GDI函数来对图形进行平移、旋转、缩放等变换操作,也可以将多个图形进行组合,实现复杂的图形效果。

最后,GDI通过使用裁剪区域来限制图形的绘制范围。

裁剪区域是一个与设备相关的区域,它可以用来限制图形的绘制范围,从而实现局部图形的显示和隐藏。

总的来说,GDI是一种强大而灵活的图形绘制技术,它为应用程序提供了丰富的图形绘制功能,并且具有良好的设备无关性。

通过使用GDI,应用程序可以实现各种复杂的图形效果,从而提升用户界面的质量和用户体验。

在本文中,我们对GDI的原理及其工作方式进行了深入的探讨,希望能够帮助读者更好地理解和应用GDI技术。

通过对GDI的学习和掌握,我们可以更加轻松地实现各种复杂的图形效果,从而为用户提供更加丰富和优秀的应用程序。

图形设备接口

图形设备接口

图形设备接口学前提示Windows中负责图形输出的是图形设备接口GDI(Graphic Device Interface)。

GDI通过将应用程序与不同的输出设备特性相隔离,使Windows应用程序能够无须修改即可在Windows支持的任何图形输出设备上运行,即具有设备无关性。

本章主要介绍图形设备接口的知识——设备描述表,坐标系统,映射模式,绘图函数和绘图工具知识要点设备上下文坐标的映射绘制基本图形创建画笔设备上下文类为了支持GDI绘图,MFC提供了两种重要的类设备上下文类,包括CDC及其派生类,用于设置绘图属性和绘制图形绘图对象类,封装了各种GDI绘图对象,包括画笔,画刷,字体,位图,调色板和区域等设备上下文类包括CDC类和它的派生类CClientDC,CPaintDC,CWindowDC ,CMetaFileDC。

表7.1 CDC 类的一些常用函数7.2 坐标的映射坐标的映射方式简单地讲就是坐标的安排方式,系统默认的映射模式为MM_TEXT,即X坐标向右增加,Y坐标向下增加,(0,0)在屏幕左上方,DC中的每一点就是屏幕上的一个象素,如图7.3所示。

如语句pDC->Rectangle(CRect(0,0,300,300))表示将绘制出一个矩形,这个矩形的左上角落在屏幕的左上方,长和宽均为300 个象素屏幕坐标X 坐标向右增加7.2.1 设置映射模式用户可以通过int CDC::SetMapMode( int nMapMode) 指定映射模式,映射模式从X轴和Y 轴的比例是否可变来说,可分为固定映射模式和可变比例映射模式两类(1)固定比例映射模式,其具体值如表7.2 所示上述几种映射默认的原点在屏幕左上方,(2)可变比例映射模式7.3 绘制基本图形CDC类在它的成员函数中封装了全部Windows 图形API ,这些成员函数包括—画点的函数,画线的函数,画形状的函数,填充和翻转形状的函数,滚动屏幕的函数,绘制文本的函数,绘制位图和图表的函数7.3.1 画点画点即在指定的坐标处按给定的颜色画出像素点,点的绘制不过是改变单个像素点的颜色。

GDI

GDI
设备描述表句柄一旦获得,那么系统将使用默认的属性值填充设备描述表结构。
如果有必要,我们可以使用一些GDI函数获取和改变设备描述表中的属性值。
感谢观看
GDI+在区域(regions)方面对GDI进行了改进,在GDI中,Regions存储在设备坐标中,对Regions唯一可进 行图形变换的操作就是对区域进行平移。而GDI+用世界坐标存储区域(Regions),允许对区域进行任何图形变换 (譬如如图所示的缩放),图形变换以变换矩阵存储,下面例子是一个区域变换前后的例子(缩放、旋转、平移)
在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就 可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。GDI的出现使程序员无需要关心硬件设备 及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方 便了开发工作。
你可能会注意到上面显示的图形,红色未平移区域与变换后区域有一部分交叉区域,这一部分形成的梦幻效 果就是由GDI+支持的Alpha Blending(混合)实现的,利用alpha融合,你可以指定填充颜色的透明度,透明颜 色与背景色相互融合,填充色越透明,背景色显示越清晰,四个椭圆被填充了同样的颜色,但由于拥有不同的透 明度而呈现不同的显示效果。
GDI+提供了矩阵对象,一个非常强大的工具,使得编写图形的旋转、平移、缩放代码变得非常容易。一个矩 阵对象总是和一个图形变换对相起来,比方说,路径对象(PATH)有一个Transform方法,它的一个参数能够接 受矩阵对象的,每次路径绘制时,它能够根据变换矩阵绘制。下面的图形是一个图形变换前后的例子,变换按照 先缩放后旋转完成。

gdi+ 原理

gdi+ 原理

gdi+ 原理GDI(Graphics Device Interface)是Windows操作系统中用于图形输出的接口。

它是Microsoft公司开发的一种图形处理标准,用于在Windows操作系统中实现各种图形设备和应用程序的图形输出。

在计算机科学中,GDI是一种非常常见的图形编程接口,它提供了一种方便的方式来访问各种图形设备和应用程序中的图形数据。

一、GDI的组成GDI主要由以下几个部分组成:1. 设备上下文(DC):设备上下文是GDI中的一个重要概念,它代表了一个特定的输出设备,如屏幕、打印机等。

在GDI中,设备上下文包含了与输出设备相关的各种信息,如分辨率、颜色格式等。

2. 画笔(Pen):画笔是GDI中的一个工具,它允许开发者在设备上下文中绘制各种形状和线条。

画笔包含了颜色、宽度、样式等属性。

3. 刷子(Brush):刷子是GDI中的另一个工具,它允许开发者在设备上下文中绘制填充。

刷子包含了颜色、粗细等属性,以及一个位图来表示实际的填充图案。

4. 字体(Font):字体是GDI中用于文本输出的一个重要概念。

开发者可以通过指定字体、大小、样式等属性来输出文本。

5. 区域(Region):区域是GDI中的一个概念,它允许开发者对设备上下文中的某个区域进行操作,如绘制、剪裁等。

区域由一组路径和形状组成,可以通过GDI的API进行操作。

二、GDI的工作原理GDI通过调用各种绘图函数来操作设备上下文,从而实现图形的输出。

这些绘图函数包括画线、填充、文本输出等。

开发者可以通过GDI提供的API来创建、使用和管理这些绘图函数。

GDI的工作原理可以分为以下几个步骤:1. 创建设备上下文:开发者首先需要创建一个设备上下文对象,指定输出设备的属性,如分辨率、颜色格式等。

2. 创建画笔和刷子对象:根据需要,开发者可以创建画笔和刷子对象,并设置它们的属性。

3. 调用绘图函数:开发者通过调用GDI提供的绘图函数,将画笔和刷子应用到设备上下文中,从而实现图形的输出。

06图形设备接口GDI基本概念

06图形设备接口GDI基本概念

设备坐标系分为屏幕坐标系、窗口坐标系和客户区坐标系三种相互独立的坐标系。屏幕坐标系以屏幕左上角为原点,一些与整个屏幕有关的函数均采用屏幕坐标,如GetCursorPos()、SetCursorPos()、CreateWindow()、MoveWindow()。弹出式菜单使用的也是屏幕坐标。窗口坐标系以窗口左上角为坐标原点,它包括窗口标题栏、菜单栏和工具栏等范围。客户区坐标系以窗口客户区左上角为原点,主要用于客户区的绘图输出和窗口消息的处理。鼠标消息的坐标参数使用客户区坐标,CDC类绘图成员函数使用与客户区坐标对应的逻辑坐标。
1. GDI的一些基本概念
Windows绘图过程和设备无关性的实现:
GDI处于设备驱动程序的上一层,当程序调用绘图函数时,GDI将绘图命令传送给当前设备的驱动程序,以调用驱动程序提供的接口函数。驱动程序的接口函数将Windows绘图命令转化为设备能够执行的输出命令,实现图形的绘制。不同设备具有不同的驱动程序,设备驱动程序是设备相关的。
如果采用MFC方法编程,MFC提供了不同类型的DC类,每一个类都封装了DC句柄,并且它们的构造函数自动调用获取DC的API函数,析构函数自动调用释放DC的API函数。因此,在程序中通过声明一个MFC设备环境类的对象就自动获取了一个DC,而当该对象被销毁时就自动释放了获取的DC。MFC AppWizard应用程序向导创建的OnDraw()函数自动支持所获取的DC。MFC的DC类包括CDC、CPaintDC、CClientDC、CWindowDC和CMetaFileDC等,其中CDC类是MFC设备环境类的基类,其它的MFC设备环境类都是CDC的派生类。
获取设备环境DC的方法:
在程序中不能直接存取DC数据结构,只能通过系统提供的一系列函数或使用设备环境的句柄HDC来间接地获取或设置设备环境结构中的各项属性,如显示器高度和宽度、支持的颜色数及分辨率等。如果采用SDK方法编程,获取DC的方法有两种:在WM_PAINT消息处理函数中通过调用API函数BeginPaint()获取设备环境,在消息处理函数返回前调用API函数EndPaint()释放设备环境。在其他函数中通过调用API函数GetDC()获取设备环境,调用API函数ReleaseDC()释放设备环境。

GDI编程

GDI编程

GDI编程GDI编程一、GDI相关概念1、 GDI(Graphics Device Interface):图形设备接口,是一个应用程序与输出设备之间的中介。

它提供了一套函数库,这些函数在不同的输出设备上输出图形和文字。

一方面,GDI向应用程序提供一个与设备无关的编程环境,另一方面,它又以设备相关的格式和具体的设备打交道。

2、DC (Device Context):设备描述表(设备上下文),是一种Windows数据结构,包括了如线的宽度和颜色、刷子的样式和颜色、字体、剪裁区域等信息。

用于表达显示器、打印机等设备。

DC的主要作用是进行绘图和输出文字,如绘制线条、形状和文本等,具体如dc.MoveTo(),dc.LineTo(),dc.Ellipse(),dc.FillRect(),dc.FillSolidRect(),dc.TextOut()等。

Win32下与HDC相关的函数有:GetDC(), BeginPaint()/EndPaint(),GetWindowDC()等对应的MFC版本的类有:CDC, CPaintDC, CClientDC, CWindowDC等3、GDI对象:DC定义了一组GDI对象,包括画笔,画刷,字体,位图,调色板,剪裁区域,路径层(Path)。

他们有Win32和MFC两套实现版本,其对应关系如下:4、DC与GDI对象之间的关系:GDI对象是通过DC发生作用的,要使用这些GDI对象,可以使用Win32函数SelectObject来将其选入DC中,如::SelectObject(hdc, hPen);5、利用DC和GDI对象绘图的完整步骤为:(1). 获取或者创建一个DC(2). 获取或者创建一个GDI对象(Pen, Brush等)(3). 使用dc.SelectObject函数把GDI对象选入DC(4). 使用DC进行绘图或文字输出(5). 恢复DC原来的GDI对象并删除刚新创建的GDI对象,如pen.DeleteObject()(6). 释放或删除设备描述表DC其中,(1)和(6),(2)和(5)是成对出现的。

第二章-Windows图形设备接口与绘图

第二章-Windows图形设备接口与绘图

使用环境 操作区域 释放设备环 境所用函数
4. 映像模式
映像模式定义了将逻辑单位转化为设备的度
量单位以及x和y方向; 程序员可在一个统一的逻辑坐标系中操作, 不必考虑输出设备的坐标系情况。
窗口——对应逻辑坐标系上所设定的区域;
视口——对应实际输出设备上所设定的区域。
坐标系统
•逻辑坐标系统 •设备坐标系统
SelectObject(hdc,hBr); 不使用画刷时,可删除画刷,释放内存 DeleteObject(hBr);
3. 颜色的设置
Windows使用宏RGB定义绘图的颜色,
其形式为: RGB(nRed,nGreen,nBlue)
蓝色:RGB(0,0,255) 绿色:RGB(0,255,0) 红色:RGB(255,0,0)
只有在映射模式为 SetWindowOrgEx函数的原形为: MM_ANISOTROPIC BOOL SetWindowOrgEx 和MM_ISOTROPIC ( 时才有意义 HDC hdc, int X,Y, //以逻辑单位表示的窗口原点坐标 LPPOINT lpPoint //函数调用前原点坐标的POINT结构的地址 );
nMapMode=GetMapMode(hdc);
nMapMode为映像模式的整型标识符 根据需要设置映像模式。
SetMapMode(hdc,nMapMode);
窗口区域的定义函数: BOOL Set WindowExtEx ( HDC hdc, int nHeight,nWidth, //窗口高宽,以逻辑单位表示。 LPSIZE lpSize, //原窗口区域尺寸的SIZE结构地址 );
4. 绘制椭圆弧线
BOOL Arc ( HDC hdc, int X1,intY1, int X2,int Y2, int X3,int Y3, int X4,int Y4 )

第06课 - 图形设备接口

第06课 - 图形设备接口

消 息 队 列
线程
17
return 0; }
鼠标消息
Windows程序设计-基础教程
鼠标的消息有哪些?
WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK WM_RBUTTONDOWN WM_RBUTTONUP WM_RBUTTONDBLCLK WM_MBUTTONDOWN WM_MOUSEMOVE WM_MOUSEWHEEL WM_NCLBUTTONDOWN WM_NCLBUTTONUP
18
鼠标消息
Windows程序设计-基础教程
WM_LBUTTONDOWN 参数功能:
wParam 存放一个标志,该标志注明了当鼠标左键按 下的时候还有什么键同时被按下。 lParam 存放当前光标的在窗口中的位置。
19
鼠标消息
Windows程序设计-基础教程
光标的位置:
xPos = LOWORD(lParam); yPos = HIWORD(lParam);
34
Windows程序设计-基础教程
绘制直线
பைடு நூலகம்
35
画线函数
Windows程序设计-基础教程
BOOL MoveToEx( HDC hdc, int X, //起始xpos int Y, //起始ypos LPPOINT lpPoint //光标的旧位置 ); 功能:确定直线的起始坐标 BOOL LineTo( HDC hdc, int nXEnd, int nYEnd); 功能:确定直线的结束坐标,并画线
27
设备环境句柄
Windows程序设计-基础教程
HDC 设备环境句柄

补充(5)图形设备接口(GDI)

补充(5)图形设备接口(GDI)

SetViewportOrg和 SetViewportOrg和SetWindowOrg
(4) pDC->SetMapMode(MM_LOMETRIC); pDC->SetViewportOrg(100, 100); (4) pDC->Rectangle(0,0,200,200); (5) pDC->SetMapMode(MM_LOMETRIC); pDC->SetWindowOrg(100, 100); pDC->Rectangle(0,0,200,200); (5) 注意:MM_LOMETRIC模式下逻辑坐标系 与设备坐标系Y方向相反。 移动窗口原点或视口原点都能达到移动图形的目的,但移动的量是不 一样的。移动窗口原点,移动量以逻辑坐标为单位;移动视口原点, 移动量以像素为单位。
VC坐标系解析——逻辑坐标 VC坐标系解析——逻辑坐标 坐标系解析——
逻辑坐标除MM_TEXT模式外均指物理尺寸,如mm,inch等。 Windowsd GDI函数用逻辑坐标系。 逻辑坐标的坐标X,Y正方向随着映射模式的不同而不同。 当程序员在调用一个画线的GDI函数LineTo,画出25.4mm(1英寸) 长的线时,他并不需要考虑输出的是何种设备。若设备是VGA显示器, Windows自动将其转化为96个像素点;若设备是一个300dpi的激光打 印机,Windows自动将其转化为300个像素点。
映射模式
要指定绘图位置,需使用坐标系。Windows提供了若干种不同的坐标 系,它们分为两类:设备坐标系和逻辑坐标系。除以下三种设备坐标 系外,其余的均为逻辑坐标系: (1) 屏幕坐标系:使用整个屏幕作为坐标区域。 (2) 窗口坐标系:使用包括边界在内的整个应用程序窗口作为坐标区域。 (3) 用户区坐标系:只使用窗口中的用户区作为坐标区域,不包括边界 及菜Байду номын сангаас栏和滚动条等。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 所谓设备无关性,是指操作系统屏蔽了硬件设备的差异, 使用户编程时一般无需考虑设备的类型,如不同种类的 显示器或打印机。
一、图形设备接口(GDI)
GDI负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上 显示图形或文字, 是Windows系统的重要组成部分。
Windows
利用GDI和 Windows设 备驱动程序
6.1 图形设备接口
• Windows提供了一个称为图形设备接口GDI(Graphics Device Interface)的抽象接口。GDI作为Windows的 重要组成部分,它负责管理用户绘图操作时功能的转换。 用户通过调用GDI函数与设备打交道,GDI通过不同设备 提供的驱动程序将绘图语句转换为对应的绘图指令,避免 了直接对硬件进行操作,从而实现所谓的设备无关性。
• 如果采用MFC方法编程,MFC提供了不同类型的DC类, 每一个类都封装了DC句柄,并且它们的构造函数自动调用 获取DC的API函数,析构函数自动调用释放DC的API函数。 因此,在程序中通过声明一个MFC设备环境类的对象就自 动获取了一个DC,而当该对象被销毁时就自动释放了获取 的DC。MFC AppWizard应用程序向导创建的OnDraw() 函数自动支持所获取的DC。
• 形象地说,一个设备环境提供了一张画布和一些绘画的工 具,我们可以使用不同颜色的工具在上面绘制点、线、圆 和文本。
• 设备环境中的“设备”是指任何类型的显示器或打印机等 输出设备,绘图时用户不用关心所使用设备的编程原理和 方法。所有的绘制操作必须通过设备环境进行间接的处理, Windows自动将设备环境所描述的结构映射到相应的物 理设备上。
• MFC 的 DC 类 包 括 CDC、CPaintDC、CClientDC、 CWindowDC和CMetaFileDC等,其中CDC类是MFC设 备环境类的基类,其它的MFC设备环境类都是CDC的派生 类。
MFC设备环境类:
• CDC类既作为其它MFC设备环境类的基类,又可以作为一 个一般的设备环境类使用。利用它可以访问设备属性和设 置绘图属性。CDC类对GDI的所有绘图函数进行了封装。
• 从根本上来说,设备环境DC是一个Windows数据结构, 该结构存储着程序向设备输出时所需要的信息,应用程序 利用它定义图形对象及其属性,并实现应用程序、设备驱 动程序和输出设备之间绘图命令的转换。
• 在Windows中不使用DC无法进行输出,在使用任何GDI 绘图函数之前,必须建立一个设备环境。
• CPaintDC类是OnPaint()函数使用的设备环境类,它代表 一个窗口的绘图画面。如果添加WM_PAINT消息处理函数 OnPaint(),就需要使用CPaintDC类来定义一个设备环境 对象。
• CClientDC类代表了客户区设备环境。当在客户区实时绘 图时,需要利用CClientDC类定义一个客户区设备环境。
获取设备环境DC的方法:
• 在程序中不能直接存取DC数据结构,只能通过系统提供的 一系列函数或使用设备环境的句柄HDC来间接地获取或设 置设备环境结构中的各项属性,如显示器高度和宽度、支 持的颜色数及分辨率等。
• 如 果 采 用 SDK 方 法 编 程 , 获 取 DC 的 方 法 有 两 种 : 在 WM_PAINT消息处理函数中通过调用API函数BeginPaint() 获 取 设 备 环 境 , 在 消 息 处 理 函 数 返 回 前 调 用 API 函 数 EndPaint()释放设备环境。在其他函数中通过调用API函数 GetDC()获取设备环境,调用API函数ReleaseDC()释放 设备环境。
• 编程时采用MFC方法绘制图形也很方便,MFC对GDI形设备接口GDI管理Windows应用程序图形的绘制, 在应用程序中,通过调用GDI函数绘制不同尺寸、颜色、 风格的几何图形、文本和位图。这些图形处理函数组成 了图形设备接口GDI。
• GDI是形成Windows核心的三种动态链接库之一,MFC 将GDI函数封装在一个名为CDC的设备环境类中,因此 我们可以通过调用CDC类的成员函数来完成绘图操作。
支持与设备无关的图形
开发人员只要建 立与输出设备的 关联,让系统加 载相应的设备驱 动程序即可
1. GDI的一些基本概念
设备描述表即为设备环境的属性的集合。
为确保图形输出 的设备无关性
应用程序与 输出设备之 间的桥梁
直接访问
用 户
不允许 Win系统
外设
提供
统一的设备环境(DC)
使应用程序与设备相连
第6章 图形与图像编程基础
主讲:马川
本章主要学习内容: • 图形处理的基本原理:
–图形设备接口 –设备环境 –GDI坐标系 –映射模式
• 使用画笔和画刷绘制图形 • 文本与字体 • 位图、图标和光标
• Windows图形设备接口(GDI)是为与设备无关的图形设 计的。所谓设备的无关性,就是操作系统屏蔽了硬件设备 的差异,因而设备无关性能使用户编程时无需考虑特殊的 硬件设置。
设备描 述表及 其属性
应 用 程 序
应用程序每一次图形 操作均参照设备描述
表中的属性执行
6.1.2 设备环境
• 为了实现设备无关性,应用程序的输出不直接面向显示器 等物理设备,而是面向一个称之为设备环境DC(Device Context)的虚拟逻辑设备。
• 设备环境也称设备描述表或设备上下文,它是由Windows 管理的一个数据结构,它保存了绘图操作中一些共同需要 设置的信息,如当前的画笔、画刷、字体和位图等图形对 象及其属性,以及颜色和背景等影响图形输出的绘图模式。
Windows绘图过程和设备无关性的实现:
GDI处于设备驱动程序的上一层,当程序调用绘图函数时,GDI将绘 图命令传送给当前设备的驱动程序,以调用驱动程序提供的接口函数。驱 动程序的接口函数将Windows绘图命令转化为设备能够执行的输出命令, 实现图形的绘制。不同设备具有不同的驱动程序,设备驱动程序是设备相 关的。
相关文档
最新文档