2.3 KiB
2.3 KiB
图形系统:坐标、位图与绘制
原书依据:第 14–15 章,印刷页 96–117,PDF 页 107–128。
图形对象不是外接的独立语言。坐标、矩形、位图、光标和绘图动作都通过消息协议组织。
Point 与 Rectangle
12 @ 18
(12 @ 18) x
(12 @ 18) y
@ 是向数字发送的二元消息,产生一个 Point。后两条分别取 x 与 y。因为 @ 和 + 同为二元消息,混用时最好加括号。
Rectangle 表示矩形区域。阅读构造调用时要分清传入的是角点还是尺寸;阅读几何操作时要区分包含、相交、平移和缩放。边界点是否包含应核对具体方法,不能只凭图形直觉。
坐标系必须写在图旁
原书图形环境的屏幕坐标通常从左上向右下增加;数学曲线常要求 y 轴向上。因此绘制之前要说明对象坐标与显示坐标之间的转换。
模型坐标 → 视图变换 → 显示坐标 → 裁剪 → 像素绘制
相同点在不同视图中可以对应不同屏幕位置。移动视口时只改变显示映射,不应顺便改变领域模型中的坐标。
从存储到绘制
| 对象 | 阅读重点 |
|---|---|
Bitmap |
像素位信息的底层存储 |
DisplayObject |
可显示对象的公共概念 |
DisplayText |
文本的图形表示 |
Form |
位图图像、尺寸与显示属性 |
Cursor |
光标图形 |
DisplayScreen |
屏幕显示对象 |
Path |
图形路径 |
BitBlt |
源区域到目标区域的位图传输与组合 |
Pen |
以位置和移动描述绘图 |
研究 BitBlt 时记录源、目标、传输区域、裁剪范围和组合规则。它涉及像素组合,不只是语言层面的对象复制。Form 的副本若共享底层位图,修改像素仍可能影响原图;这与对象协议篇的浅复制问题相连。
曲线绘制的最小思路
把函数保存为块,对一系列 x 求 y,转换成显示点,再用线段连接。采样步长越大,细节越容易丢失。固定采样不是精度保证;异常值、坐标越界和不连续曲线都需要额外策略。
这是对原书曲线案例的阅读提示,不是新增的绘图运行时。下一篇先介绍如何借助系统工具观察这些对象,再进入 MVC 的连接过程。