教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

计算机图形学实验指导书(4)

来源:网络收集 时间:2026-08-08
导读: 3.2 图形设备接口和图形程序设计 3.2.1 图形设备接口简介 在Windows系统中,程序都是通过一个叫做图形设备接口(GDI, Graphics Device Interface)的抽象接口和硬件打交道,Windows会自动将设备环境表映射到相应的

3.2 图形设备接口和图形程序设计

3.2.1 图形设备接口简介

在Windows系统中,程序都是通过一个叫做图形设备接口(GDI, Graphics Device Interface)的抽象接口和硬件打交道,Windows会自动将设备环境表映射到相应的物理设备,并且会提供正确的输入/输出指令。

GDI是Windows系统核心的三种动态链接库之一,它管理Windows系统的所有程序的图形输出。在Windows系统中,GDI向程序员提供了高层次的绘图函数,只要掌握这些绘图函数,就可以很方便地进行图形程序设计。

另一个概念是设备描述表(DC, Device Context)。DC是一个数据结构,当程序向GDI设备中绘图时,需要访问该设备的DC。MFC将GDI的DC封装在C++类中,包括CDC类和CDC派生类,这些类中的许多成员都是对本地GDI绘图函数进行简单封装而形成的内联函数。

DC的作用就是提供程序与物理设备或者虚拟设备之间的联系,除此之外,DC还要处理绘图属性的设置,如文本的颜色等。程序员可以通过调用专门的GDI函数修改绘图属性,如SetTextColor()函数。

CDC类是GDI封装在MFC中最大的一个类,它表示总的DC。表3.1列出了CDC中的一些常用绘图函数。

表3.1 CDC类中常用绘图函数 函 数 Arc() BitBlt() Draw3dRect() DrawDragRect() DrawEdge() DrawIcon() Ellipse() FillRect() FillRgn() FillSolidRed() FloodFill() FrameRect() FrameRgn() GetBKColor() GetCurrentBitmap() GetCurrentBrush() GetCurrentFont() GetCurrentPalette() GetCurrentPen() GetCurrentPosition() GetDeviceCaps() 椭圆弧 把位图从一个DC拷贝到另一个DC 绘制三维矩形 绘制用鼠标拖动的矩形 绘制矩形的边缘 绘制图标 绘制椭圆 绘制用给定的画刷颜色填充矩形 绘制用给定的画刷颜色填充区域 绘制用给定的颜色填充矩形 用当前的画刷颜色填充区域 绘制矩形边界 绘制区域边界 获取背景颜色 获取所选位图的指针 获取所选画刷的指针 获取所选字体的指针 获取所选调色板的指针 获取所选画笔的指针 获取画笔的当前位置 获取显示设备能力的信息 描 述 使用频率 **** * ** ** ** *** **** *** *** *** *** ** ** ***** ** *** *** *** *** **** ** -- 7

GetMapMode() Getpixel() GetPolyFillMode() GetTextColor() GetTextExtent() GetTextMetrics() GetWindow() GrayString() LineTo() MoveTo() Pie() Polygon() PolyLine() RealizePalette() Rectangle() RoundRect() SelectObject() SelectPalette() SelectStockObject() SetBkColor() SetMapMode() SetPixel() SetTextColor() StretchBlt() TextOut() 获取当前设置映射模式 获取给定像素的RGB颜色值 获取多边形填充模式 获取文本颜色 获取文本的宽度和高度 获取当前文本的信息 获取DC窗口的指针 绘制灰色文本 绘制直线 设置当前画笔位置 绘制饼图 绘制多边形 绘制一组直线 将逻辑调色板映射到系统调色板 绘制矩形 绘制圆角矩形 选择GDI绘图对象 选择逻辑调色板 选择预定义图形对象 设置背景颜色 设置映射模式 把像素设定为给定的颜色 设置文本颜色 *** ***** *** **** ** ** ** *** ****** ****** *** *** *** ** **** *** ** ** ** ****** *** ****** ****** 把位图从一个DC拷贝到另一个DC,并根据需* 要扩展或压缩位图 绘制字符串文本 ***** 这些函数的语法和使用可以通过MSDN帮助查询。3.2.2节主要介绍Windows中基本图形,包括点、直线、圆、圆弧、矩形、椭圆、扇形、折线等程序设计

3.2.2 绘制基本图形

(1)画点

SetPixel()函数可以在指定的坐标位置按指定的颜色画点。函数原型说明如下:

COLORREF CDC:: SetPixel(int X, int Y, COLORREF crColor);

其中,(X,Y)为点的坐标位置,crColor参数为点的颜色值。如果函数调用成功,则函数返回像素的颜色值,否则返回值为-1。颜色值通过RGB(Red,Green,Blue)来设置,其中三个参数取值0~255。例如,在VcAPP项目中,在CVcAppView类中的OnDraw()函数中加入下列画点语句:

//绘制一组彩色点 //绘制一组彩色点 pDC->TextOut(20,20,\

-- 8

pDC->SetPixel(100,20,RGB(255,0,0)); pDC->SetPixel(110,20,RGB(0,255,0)); pDC->SetPixel(120,20,RGB(0,0,255)); pDC->SetPixel(100,20,RGB(255,255,0)); pDC->SetPixel(100,20,RGB(255,0,255)); pDC->SetPixel(100,20,RGB(0,255,255)); pDC->SetPixel(100,20,RGB(0,0,0)); pDC->SetPixel(100,20,RGB(255,255,255)); 运行程序,查看运行结果。

(2)画直线和折线

画直线需要LineTo()和MoveTo()两个函数的配合使用。

LineTo()函数以当前位置所在的点为直线的起点,另指定一个点为直线的终点,画出一段直线。直线的颜色通过画笔的颜色来设定,在后面介绍。LineTo()函数原型说明如下:

BOOL CDC:: LineTo(int nXEnd, int nYEnd); 直线的终点位置由(nXEnd, nYEnd)指定。如果函数调用成功,那么该点就成为当前位置,并返回TRUE,否则返回FALSE。 …… 此处隐藏:1026字,全部文档内容请下载后查看。喜欢就下载吧 ……

计算机图形学实验指导书(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/564065.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)