计算机图形学实验指导书(4)
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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




