友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
C语言实例教程(PDF格式)-第68部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
这样的例子。
前面提到过,使用下面的函数调用可以自定义设备上下文对象dc的坐
标映射。
dc。SetMapMode(MM_ANISOTROPIC);
但是,在使用了上面的代码之后,还需要具体的指定自定义坐标系统
在x方向和y方向上的单位长度、坐标轴正方向以及视口左上角的位置
在坐标映射中所对应的坐标值等。这个操作是通过调用CDC类的成员
函数SetWindowExt和SetViewportExt来实现的。
图9。 17 设备上下文中窗口和视口的关系
图9。17说明了在设备上下文中窗口 (Window)和视 口(ViewportExt)的
关系。视口度量的设置以设备象素为单位,而窗口度量的设置则几乎
的任意的。所谓的自定义坐标系统即是将由窗口定义的坐标系统映射
到由视 口定义的设备上下文中的区域。
l 注意:
l 上面的术语 “窗口”并不是指Windows中的窗口对象,而是在设备
上下文中进行坐标映射时使用的一个抽象概念。在本节中,具有
上述意义的术语 “窗口”有可能和通常意义中的Windows术语 “窗
口”混用,读者应根据具体的上下文明确其含义。
在调用SetViewportExt设置视口之前必须先调用SetWindowExt设置窗
口。
…………………………………………………………Page 589……………………………………………………………
函数SetWindowExt可以使用两个整型量作为其参数,也可以使用一个
CSize对象作为其参数。它指定了窗口的横向度量和纵向度量。当所
指定的横向度量为负值时,表示x轴的正方向向左;当所指定的纵向
度量为负值时,表示y轴的正方向向上。
同时还可以使用函数SetWindowOrg来设置窗口左上角对应的坐标。这
样就可以实现坐标平面原点的平移。
在设置了窗口之后,我们还需要调用SetViewportExt函数设置视口。
函数SetViewportExt使用了与SetWindowExt相类似的参数。它们指定
了视口的横向度量和纵向度量。类似的,我们还可以使用函数
SetViewportOrg来设置视口的左上角的屏幕坐标。这里需要注意的
是,在函数SetViewportExt和SetViewportOrg中所使用的参数的量值
是以设备象素为单位的。
上面所提到的这些函数都是CDC类的成员函数。
下面所给的示例程序FuncGraphy输出一个函数'示例中是 '的图
象。为了方便起见,我们使用了自定义的坐标系统。在该坐标系统
中,原点的窗口客户区中的中心,横坐标的范围为?31。006到
31。006,在这个范围内恰好包括函数的一个完整的图象范围。其纵坐
标的范围为1。2到 1。2。
?
为了节省篇幅,我们这里仅给出应用程序主窗口的OnPaint函数:
// 应用程序主窗口的重绘函数
void CMyWnd::OnPaint()
{
// 获得窗口的客户区设备上下文句柄
CPaintDC dc(this);
// 设置映射模式为 MM_ANISOTROPIC
dc。SetMapMode(MM_ANISOTROPIC);
// 设置窗口左上角的坐标为
dc。SetWindowOrg(…31006; 1200);
// 设置窗口度量
…………………………………………………………Page 590……………………………………………………………
dc。SetWindowExt(int(2000*31。006); …2400);
// 获得客户区矩形
CRect rc;
GetClientRect(rc);
// 设置视口左上角的坐标
dc。SetViewportOrg(0; 0);
// 设置视口度量
dc。SetViewportExt(rc。Width(); rc。Height());
// 创建蓝色实线画笔
CPen pen(PS_SOLID; 1; RGB(0; 0; 255)); *pOldPen;
pOldPen=dc。SelectObject(&pen);
// 创建蓝色斜线刷子
CBrush br(HS_BDIAGONAL; RGB(0; 0; 255)); *pOldBrush;
pOldBrush=dc。SelectObject(&br);
// 开始一个路径
dc。BeginPath();
dc。MoveTo(…31006; 0);
for (double x=…31。006; x
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!