《Windows SDK》017 窗口绘画:折线
本帖最后由 BngThea 于 2017-7-27 11:30 编辑一 核心知识点
* 绘制折线的函数
Polyline, PolylineTo, PolyPolyline 三个API函数来绘制折线
* 利用折线绘制sin曲线
1 曲线可以有数量足够多,长度足够短的线段组成
2 数学中的 y = sin(x) 函数的主要性质包括值域[-1,1],周期为 2 * PI
3 实现流程:
3-1 构造一个足够大的POINT数组用以存放折线数量 POINT apt
3-2 通过WM_SIZE消息获得客户区的大小
3-3 在客户区的中间画一条 x 轴
3-4 设置每个POINT对象的 x 成员值 apt.x = i * cxClient / NUM
3-5 设置每个POINT对象的 y 成员值 apt.y = (int)(cyClient / 2 * (1 - sin(i * 2 * PI / NUM)))
3-6 绘制sin曲线PolylineTo(hdc, apt, NUM)
二 新API函数
* Polyline(hdc, apt, NUM)
该函数将指定数组的POINT对象绘制成一系列线段
第一个参数: 当前环境句柄
第二个参数: 指定的POINT对象数组
第三个参数: 第二个参数指向的数组成员个数,该值必须不小于2
* PolylineTo(hdc, apt, NUM)
该函数功能同Polyline函数,区别在于将会对“当前位置”进行操作:
1 最开始将从“当前位置”绘制一条线段到apt数组的第一个POINT位置,并将“当前位置”设置为终点位置
2 以后每次绘制都会将“当前位置”设置为线段的终点
3 最终会将“当前位置”设置为apt数组的最后一个POINT位置
* PolyPolyline(hdc, apt, asz, NUM)
该函数是Polyline的升级版,可以同时绘制多条折线
第一个参数: 当前环境句柄
第二个参数: 指定的POINT对象数组
第三个参数: 第二个参数指定的对象数组中所包含每条折线的POINT个数 数组
第四个参数: 折线的个数
三 其他
* GetDeviceCaps(hdc, nIndex)
该函数可以通过第二个参数获得所需指定设备的特征
页:
[1]