第5章,[Win32 章节] :绘制直线(二)
专栏导航上一篇第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 章节] 绘制直线三