鱼C论坛

 找回密码
 立即注册
查看: 2120|回复: 0

[学习笔记] 《Windows SDK》017 窗口绘画:折线

[复制链接]
发表于 2017-7-22 16:32:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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[NUM]
      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鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-16 23:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表