我正在尝试在 Squeak-Smalltalk 中使用 Morphic 绘制四分之一圆。它是如何工作的?
提前致谢!
最好的老师是形象本身。如果您在 CircleMorph 上打开浏览器,您会看到它的超类 EllipseMorph 定义了 #drawOn:,这就是变形如何绘制自己。从那里,您可以获得所有信息和灵感来制作您的自定义变形。
更新:我的第一个想法是手工绘制(完全覆盖#drawOn:),但在 Canvas 中没有任何明显的候选者。通过让圆形自己绘制,同时将剪切矩形设置为它的四分之一,它几乎变成了一条线。
更新 2:四分之一圆的诀窍是让 CircleMorph 为您完成大部分工作!我想出的最好的是:
QuarterCircleMorph>>drawOn: aCanvas
| realBounds |
"Save the actual bounds of the morph"
realBounds := bounds.
"Pretend the bounds are 4x as big"
bounds := bounds bottom: bounds bottom + bounds height.
bounds := bounds right: bounds right + bounds width.
"Let CircleMorph handle the drawing"
super drawOn: aCanvas.
"Restore the actual bounds"
bounds := realBounds.
其中 QuarterCircleMorph 是 CircleMorph 的子类。因为你不能画出它的真实界限,所以一切都会好起来的。nb 在实际代码中,注释会是多余的(除了可能是 4x 的注释,但是,这可能是重构的标志:))