图形设备接口.docx

上传人:b****5 文档编号:2958711 上传时间:2022-11-16 格式:DOCX 页数:18 大小:27.34KB
下载 相关 举报
图形设备接口.docx_第1页
第1页 / 共18页
图形设备接口.docx_第2页
第2页 / 共18页
图形设备接口.docx_第3页
第3页 / 共18页
图形设备接口.docx_第4页
第4页 / 共18页
图形设备接口.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

图形设备接口.docx

《图形设备接口.docx》由会员分享,可在线阅读,更多相关《图形设备接口.docx(18页珍藏版)》请在冰豆网上搜索。

图形设备接口.docx

图形设备接口

图形设备接口

学前提示

Windows中负责图形输出的是图形设备接口GDI(GraphicDeviceInterface)。

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

本章主要介绍图形设备接口的知识——设备描述表,坐标系统,映射模式,绘图函数和绘图工具

知识要点

设备上下文

坐标的映射

绘制基本图形

创建画笔

设备上下文类

为了支持GDI绘图,MFC提供了两种重要的类

设备上下文类,包括CDC及其派生类,用于设置绘图属性和绘制图形

绘图对象类,封装了各种GDI绘图对象,包括画笔,画刷,字体,位图,调色板和区域等 

设备上下文类包括CDC类和它的派生类 CClientDC,CPaintDC,CWindowDC,CMetaFileDC。

表7.1CDC类的一些常用函数

函数

描述

Arc()

绘制椭圆弧

7BitBlt()

把位图从一个DC拷贝到另一个DC

Draw3dRect()

绘制三维图形

DrawDragRect()

绘制用鼠标拖动的矩形

DrawEdge()

绘制矩形的边缘

DrawIcon()

绘制图标

Ellipse()

绘制椭圆

FillRect()

用给定画刷的颜色填充矩形

FillRgn()

用给定画刷的颜色填充区域

FillSolidRect()

用给定的颜色填充矩形

FloodFill()

用当前画刷的颜色填充区域

FrameRect()

绘制矩形边界

FrameRgn()

绘制区域边界

GetBkColor()

获取背景颜色

GetCurrentBitmap()

获取所选位图的指针

GetCurrentBrush()

获取所选画刷的指针

GetCurrentFont()

获取所选字体的指针

GetCurrentPalette()

获取所选调色板的指针

GetCurrentPen()

获取所选画笔的指针

GetCurrentPosition()

获取所选画笔的当前位置

GetDevicesCaps()

获取显示设备能力的信息

GetMapMode()

获取当前设置的映射模式

GetPixel()

获取给定象素的RGB颜色值

GetPolyFillMode()

获取多边形填充模式

GetTextColor()

获取文本的颜色

GetTextExtent()

获取文本的宽度和高度

GetTextMetrics()

获取当前字体的信息

GetWindow()

获取当前DC的指针

GrayString()

绘制灰色文本

LineTo()

绘制线条

MoveTo()

设置当前画笔的位置

Pie()

绘制饼块

Polygon()

绘制多边形

RealizePalette()

将逻辑调色板映射到系统调色板

Rectangle()

绘制矩形

RoundRect()

绘制圆角矩形

SelectObject()

选择GDI绘图对象

SelectPalette()

选择逻辑调色板

SelectStockObject()

选择预定义图形对象

SetBkColor()

设置背景颜色

SetMapMode()

设置映射模式

SetPixel()

把象素设定为给定颜色

SetTextColor()

设置文本颜色

StretchBlt()

把位图从一个DC拷贝到另一个DC,根据需要扩展或压缩位图

7.2坐标的映射

坐标的映射方式简单地讲就是坐标的安排方式,系统默认的映射模式为MM_TEXT,

即X坐标向右增加,Y坐标向下增加,(0,0)在屏幕左上方,DC中的每一点就是屏幕上的一个象素,如图7.3所示。

如语句pDC->Rectangle(CRect(0,0,300,300))表示将绘制出一个矩形,这个矩形的左上角落在屏幕的左上方,长和宽均为300个象素

屏幕坐标

X坐标向右增加

屏幕

Y

坐标向下增加

7.2.1设置映射模式

用户可以通过intCDC:

:

SetMapMode(intnMapMode)指定映射模式,映射模式从X轴和Y轴的比例是否可变来说,可分为固定映射模式和可变比例映射模式两类

(1)固定比例映射模式,其具体值如表7.2所示

表7.2固定比例映射模式

名称

解释

MM_HIENGLISH

每0.001英尺,X轴的正向向右,Y轴的正向向上

MM_HIMETRIC

每个逻辑单位对应0.01毫米,X轴的正向向右,Y轴的正向向上

MM_LOENGLISH

每个逻辑单位对应0.01英尺,X轴的正向向右,Y轴的正向向上

MM_LOMETRIC

每个逻辑单位对应0.1毫米,X轴的正向向右,Y轴的正向向上

MM_TEXT

每个逻辑单位对应一个设备像素,X轴的正向向右,Y轴的正向向下

MM_TWIPS

每个逻辑单位对应打印机的1/20磅

上述几种映射默认的原点在屏幕左上方,

(2)可变比例映射模式

表7.3可变比例映射模式

名称

解释

MM_ANISOTROPIC

用任意比例的坐标轴把逻辑单位映射成用户定义的单位

MM_ISOTROPIC

用等比例的坐标轴把逻辑单位映射成用户定义的单位

7.3绘制基本图形

CDC类在它的成员函数中封装了全部Windows图形API,这些成员函数包括—画点的函数,画线的函数,画形状的函数,填充和翻转形状的函数,滚动屏幕的函数,绘制文本的函数,绘制位图和图表的函数

 

7.3.1画点

画点即在指定的坐标处按给定的颜色画出像素点,点的绘制不过是改变单个像素点的颜色。

在Windows中画点,一般只需要调用COLORREFCDC:

:

SetPixel(intx,inty,COLORREFcrColor)

就可以在指定点画上指定的颜色,同时返回原来的颜色

 

表7.4画点的函数

函数名

参数含义

SetPixel(intx,inty,COLORREFcrColor)

试图用指定的颜色画一个像素,返回绘制时使用的实际颜色

SetPixel(POINTpoint,COLORREFcrColor)

SetPixelV(intx,inty,COLORREFcrColor)

SetPiXelV()与上面的含义基本相同,但不返回绘制时使用的实际颜色,因而速度更快

SetPixelV(POINTpoint,COLORREFcrColor)

其中的X,Y为点的横坐标和纵坐标,crColor为点的颜色值。

如果函数调用成功,则返回该像素点被设置的RGB的值。

如果函数调用失败,则返回-1

7.3.2画线

画线即改变屏幕上一系列像素点的颜色,画线一般要有一个起始位置。

表7.5画线函数

函数名

功能

参数含义

MoveTo(intx,inty)

开始画线,弧和多边形时,把光标移动到一个初始位置

坐标(x,y)指定该初始位置

LineTo(intx,inty)

画一条从初始位置到另一个点的直线

坐标(x,y)指定另一个点的位置

Polyline(LPPOINTblpPoints,

intnCount)

画一条折线

lpPoints,是指向保存折线顶点的数组指针,Count指定折线顶点数组中的顶点数(≥2)

PolyPolyline(constPOINT*lpPoint,constDWORD*lpPolyPoints,intnCount)

画多个系列线条

lpPoint是指向保存折线顶点的数组指针,各条折线的顶点数保存在lpPolyPoints所指向的数组中,nCount则指定折线的数目

PolyBezier(constPOINT*lpPoints,intnCount)

画贝济埃曲线

lpPoints是曲线端点和控制点所组成的数组,nCount则指定折线的数目

Arc(intX1,intY1,intX2,intY2,intX3,intY3,intX4,intY4)

画一段弧

(X1,Y1)为该圆弧外接矩形的左上角坐标,(X2,Y2)为该圆弧外接矩形的右下角坐标,圆弧中心与点(X3,Y3)所构成的射线与该圆弧的交点成为圆弧的起始点,但改点并不位于圆弧上,圆弧中心与点(X4,Y4)所构成的射线与该圆弧的交点成为圆弧的终点,但改点也不位于圆弧上

Rectangle(intX1,intY1,intX2,intY2)

画一个矩形

(X1,Y1)为该矩形的左上角坐标,(X2,Y2)为该矩形的右下角坐标

RoundRect(intX1,intY1,intX2,intY2,intX3,intY3)

画一个圆角矩形

(X1,Y1)为该圆弧外接矩形的左上角坐标,(X2,Y2)为该圆弧外接矩形的右下角坐标,X3指定该圆角矩形的宽度,X4指定该圆角矩形的高度

Polygon(LPPOINTlpPoints,

intnCount)

画一个多边形

lpPoints是指向保存多边形顶点的数组指针,nCount指定多边形顶点数组中的顶点数

PolyPolygon(LPPOINTlpPoints,LPINTlpPolyCounts,

intnCount)

创建一个或多个多边形

lpPoints是指向保存多边形顶点的数组指针,多边形的顶点数保存在lpPolyCounts所指向的数组中,nCount则指定多边形的边数

Ellipse(intX1,intY1,intX2,

intY2)

画一个椭圆

(X1,Y1)为该圆弧外接矩形的左上角坐标,(X2,Y2)为该圆弧外接矩形的右下角坐标

Pie(intX1,intY1,intX2,intY2,intX3,intY3,intX4,intY4)

画一个扇形

(X1,Y2)为该圆弧外接矩形的左上角坐标,(X2,Y2)为该圆弧外接矩形的右下角坐标,圆弧中心与点(X3,Y3)所构成的射线与该圆弧的交点成为圆弧的起始点,但该点并不位于圆弧上,圆弧中心与点(X4,Y4)所构成的射线与该圆弧的交点成为圆弧的终点,但该点也不位于圆弧上

Draw3dRect(intx,inty,intcx,

Intcy,COLORREFclrTopLeft,COLORREFclrBottomRight)

画一个三维矩形

(X,Y)为三维矩形的左上角坐标,cx指定该三维矩形的宽度,cy指定该三维矩形的高度,clrTopLeft指定该三维矩形的上边与左边的颜色,clrBottomRight指定该三维矩形的底边与右边的颜色

Chord(intX1,intY1,intX2,

intY2,intX3,intY3,intX4,

intY4)

画弦

(X1,Y1)为该圆弧外接矩形的左上角坐标,(X2,Y2)为该圆弧外接矩形的右下角坐标,圆弧中心与点(X3,Y3)所构成的射线与该圆弧的交点成为圆弧的起始点,但改点并不位于圆弧上,圆弧中心与点(X4,Y4)所构成的射线与该圆弧的交点成为圆弧的终点,但改点也不再圆弧上。

7.4文本的设计与实现

表7.7与文本有关的函数

函数名

功能

参数含义

TextOut(intx,inty,constCString&str)

在一个指定的位置,输出一个字符串

(x,y)为该文本的起始坐标

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1