0

我正在尝试在 Squeak-Smalltalk 中使用 Morphic 绘制四分之一圆。它是如何工作的?

提前致谢!

4

1 回答 1

2

最好的老师是形象本身。如果您在 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 的注释,但是,这可能是重构的标志:))

于 2011-12-06T19:02:11.797 回答