我试图在Squeak-Smalltalk中用Morphic绘制四分之一圆。 它是如何工作的?
提前致谢!
答案 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之外,但那时,这可能是重构的标志:))