吱吱圈节

时间:2011-12-06 18:22:00

标签: smalltalk squeak morphic

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

提前致谢!

1 个答案:

答案 0 :(得分: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的子类。因为你不能超越它的真实界限,一切都会成功。注:在实际的代码中,评论会有些过分(除了4x之外,但那时,这可能是重构的标志:))