专栏导航
上一篇:第5章,[Win32 章节] :绘制直线(一)
回到目录
下一篇:第5章,[Win32 章节] :绘制直线(三)
本节前言
对于本节所讲解的知识,有可能,你会需要时不时地参考本专栏的其它文章。真的遇到了需要参考之前的文章的知识点,请你自行查阅。
我呢,也会提到一部分的参考课节。但是呢,你不应该依赖于我的主动提及。最好呢,你自己能够多去了解和查看本专栏目录。
学习本节之前,需要先学习以下的先修课节。
参考课节:第5章,[Win32 章节] :绘制直线(一)
本节内容,主要来自于对佩措尔德原教材的大段抄录。
我们开始。
一. 本节内容
为了画一条直线,必须调用两个函数。第一个函数用来指定直线的起点,第二个函数用来指定直线的终点。
MoveToEx (hdc, xBeg, yBeg, NULL); LineTo (hdc, xEnd, yEnd);MoveToEx 实际上没有画任何东西,只是设置设备环境的 “当前位置” 属性。接着,LineTo 函数在指定线段的终点的同时,在当前位置和终点之间绘制一条直线。当前位置可以认为是某些 GDI 函数绘制的起始点。在默认的设备环境中,点 (0, 0)为最初设定的当前位置。如果没有设定当前位置,那么调用 LineTo 函数就从客户区的左上角开始画线。
让我们回顾一下历史,在 16 位版本的 Windows 中,设置当前位置的函数是 MoveTo 。这个函数仅有三个参数:设备环境句柄,x 坐标和 y 坐标。函数的返回值是运行该函数之前的当前位置,它是一个由两个 16 位的值拼合的 32 位无符号整型数值。然而,在 32 位版本的 Windows 中,坐标值本身就是 32 位。由于 32 位版本的 C 没有定义 64 位的整型数据类型,所以这种变化也就意味着 MoveTo 不能够在返回值上表示先前的当前位置了。MoveTo 函数的返回值在实际的程序设计中几乎从来不会使用,因此就需要一个新的函数 MoveToEx 。
MoveToEx 函数的最后一个参数是一个指向 POINT 结构的指针。从 MoveToEx 函数返回后,POINT 结构的 x 和 y 字段表示运行该函数之前的当前位置。如果不需要这些信息(通常也是如此),可以像上面的例子所示的那样设置最后一个参数为 NULL 。
警告:尽管在 Windows 98 中出现的坐标值都是 32 位的,但是仅有 16 位被利用,因此坐标值的大小实际上是在 -32768 到 32767 之间。在 Windows NT 中,这 32 位数值都被使用。
通过调用下面的函数可以获取当前位置。
GetCurrentPositionEx (hdc, &pt);这里的 pt 是一个 POINT 结构。
专栏导航
上一篇:第5章,[Win32 章节] :绘制直线(一)
回到目录
下一篇:第5章,[Win32 章节] :绘制直线(三)