Files
endorphin-tabularium-docs/content/docs/smalltalk/08-graphics.md
T

2.3 KiB
Raw Blame History

图形系统:坐标、位图与绘制

原书依据:第 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 的连接过程。