2011-12-06 14 views
0

私はSqueak-SmalltalkにMorphicを使って四分円を描こうとしています。 どのように動作しますか?Squeak Circle Section

ありがとうございます!

答えて

2

最高の教師は画像そのものです。 CircleMorphでブラウザを開くと、そのスーパークラスEllipseMorphが#drawOn:を定義していることがわかります。これは、モーフがどのように描画されるかです。そこから、カスタムモーフを作るためのすべての情報とインスピレーションを得ることができます。

更新:私の最初の考えは、手で描画することです(#drawOnを完全にオーバーライドしました:)が、キャンバスにはっきりとした候補はありませんでした。クリッピング矩形を四分の1に設定して円を描くようにすることで、ほぼ一直線になりました。

更新2: 4分の1円のトリックはCircleMorphであなたの仕事のほとんどをやっています!私が思いついた最高のものは:

ここで、QuarterCircleMorphはCircleMorphのサブクラスです。過去を描くことができないので、それは本当の限界です。すべてがうまくいきます。 n.b.実際のコードでは、コメントは過剰なものになります(おそらく4xのものを除いて、それはおそらくリファクタリングのサインです:))

+0

ありがとうございます。私はその点を得ていない。 'code' drawOn:aCanvas \t aCanvas isShadowDrawing \t \t ifTrue:[^ aCanvas fillOval:境界のfillStyle:自己のfillStyle borderWidth:0 BORDERCOLOR:なし] EllipseMorphsは方法を描きます。 \t aCanvas fillOval:bounds fillStyle:self fillStyle borderWidth:borderWidth borderColor:borderColor。 'code' しかし、円や円弧の一部を描くには? コードスニペットを私に渡すといいですね。 – Janus

+0

あなたのすべての楽しみからあなたを欺く! –

+0

Morphsが自分自身を描く場所を知ったので、あなたの望むことを行うためにあなたのサブモードでその方法を微調整しますか? –