VC++绘制坐标图

VC++绘制坐标图

ID:65323230

大小:611.79 KB

页数:27页

时间:2021-09-22

VC++绘制坐标图_第1页
VC++绘制坐标图_第2页
VC++绘制坐标图_第3页
VC++绘制坐标图_第4页
VC++绘制坐标图_第5页
VC++绘制坐标图_第6页
VC++绘制坐标图_第7页
VC++绘制坐标图_第8页
VC++绘制坐标图_第9页
VC++绘制坐标图_第10页
资源描述:

《VC++绘制坐标图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VC++绘制坐标图基于VC++的GDI常用坐标系统及应用在Windows应用程序中,只要进行绘图,就要使用GDI坐标系统。Windows提供了几种映射方式,每一种映射都对应着一种坐标系.例如,绘制图形时,必须给出图形各个点在客户区的位置,其位置用x和y两个坐标表示,x表示横坐标,y表示纵坐标.在所有的GDI绘制函数中,这些坐标使用的是一种“逻辑单位。当GDI函数将结果输出送到某个物理设备上时,Windows将逻辑坐标转换成设备坐标(如屏幕或打印机的像素点).本文讨论了图形环境中的各个映射模式,包括它们是什么,怎么工作的,以及它们真正的含义。一、基础知识(-)逻辑坐标.

2、逻辑坐标与设备无关,缺省地,一个逻辑单位等于设备中的一个象素.它是实现“所见即所得”的基础.例如,当程序员调用LineT。函数绘制25.4mm(1英寸)长的直线时,他只要使用合适的映射模式,那么就并不需要考虑输出的是何种设备.若设备是VGA显示器,Windows自动将其转化为96个像素点;若设备是一个300dpi的激光打印机,Windows自动将其转化为300个像素点.(二)设备坐标.图形输出时,Windows将GDI函数中指定的逻辑坐标映射为设备坐标,在所有的设备坐标系统中,单位以像素点为准,水平值从左到右增大(正方向向右),垂直值从上到下增大(正方向向下)。Win

3、dows中包括以下3种设备坐标,以满足各种不同需要:1、客户区域坐标,包括应用程序的客户区域,客户区域的左上角为(0,0).2、屏幕坐标,包括整个屏幕,屏幕的左上角为(0,0)。屏幕坐标用在WM_MOVE消息中(对于非子窗口)以及下面的Windows函数中:CreateWindow和MoveWindow(都对于非子窗口)、GetMessage,GetCursorPos.GetWindowRectxWindowFromPoint和SetBrushOrg中。用函数ClientToScreen和ScreenToClient可以将客户区域坐标转换成屏幕区域坐标,或反之.3、全

4、窗口坐标,包括一个程序的整个窗口,包括标题条、菜单、滚动条和窗口框,窗口的左上角为(0,0).使用GetWindowDC得到的窗口设备环境,可以将逻辑单位转换成窗口”坐标。(三)映射.映射方式定义了Windows如何将GDI函数中指定的逻辑坐标映射为设备坐标。在下文中我们将介绍常用的映射方式。此外,习惯上,我们将逻辑坐标所在的坐标系称为“窗口”;将设备坐标所在的坐标系称为“视口”,“窗口”依赖于逻辑坐标,可以是像素点、亳米或其他尺度。这一点请牢记,这对于下面的有关内容的理解至关重要.二、默认的坐标系统当在微软的窗口中进行绘图时,绘图的坐标原点在屏幕的左上角,任何物体在

5、屏再上定位都要参考这个坐标原点.在笛卡尔坐标系统中这个点被定义为坐标原点(0,0),水平坐标轴的正方向是从该点出发向右延伸,垂直坐标轴的正方向是从该点出发向下延伸。图一、笛卡尔坐标系这个坐标原点只是操作系统默认的坐标原点,所以如果你调用Ellipse(・100,-100,100,100)函数来绘制图形的话,你将得到一个圆,它的圆心位于屏幕的左上角,仅仅只有圆的四分之一部分(270度到360度的部分)显示在屏幕上.代码及效果图如下voidCExoDrawlView::OnPaint()(CPaintDCdc(this);II绘图的设备厂上下文CPenPenBlue;II

6、兰色画笔PenBlue.CreatePen(PS.SOLID,1,RGB(0,12,255));dc.SelectObject(&pPen);dc.Ellipse(-100,-100,100,100);图二、代码效果图按照同样的原理,你可以使用CpaintDC的方法或按照你的要求创建函数来绘制任何几何或非几何图形。例如,下面的代码绘制了两条相互垂直的直线,垂点位与窗口的中心,voidCExoDrawlView::OnPalnt()(CPaintDCdc(th⑸;〃绘图的设备上下文三、更改坐标系统正如上面所看到的,默认的坐标系统坐标原点位于窗口的左上角,水平轴的正方向向

7、右,垂直轴的正方向向下。为了进一步说明这一点,让我们来绘制一个半径为50个单位,圆心位于(0,0)点,同时绘制一个连接(0,0)(100,100)两点的直线。voidCExoDrawlView::OnPaint()(CPaintDCdc(this);//devicecontextforpainting//Acirclewhosecenterisattheorigin(0,0)dc.Ellipse(-50,-50,50,50);//Alinethatstartsat(0,0)andendsat(100,100)dc.MoveTo(0,0);dc.Lin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。