NSViewサブクラスでカスタム描画を実行したいのですが、どこから始めればよいですか?
3 に答える
AppleのCocoaDrawingGuideの紹介は、始めるのに最適な場所です。そこにはたくさんの例があります。
Jarretが述べたように、Appleのドキュメントは始めるのに最適な場所です。ただし、留意すべき点がいくつかあります。
ビューで使用されるデフォルトの座標系は、原点がビューの左下隅にあるデカルト座標系です。ほとんどの場合、原点をビューの左上隅に配置する必要があるため、ここでisFlipped:
メソッド(を返すデフォルトの実装NO
)をオーバーライドして、次を返しYES
ます。
- (BOOL)isFlipped
{
return YES;
}
これにより、垂直方向の反転が行われた後、原点が左上隅になるように座標系が「反転」します。これにより、一部の描画位置の計算が簡単になります。
おそらく始めたいと思う主なものは、次のようなものです。
- 基本的な長方形の塗りつぶし(
NSBezierPath
クラスメソッドfillRect:
と、NSColor
色を設定および使用するためのクラスを使用)。 - 画像の操作(
NSImage
クラスとそれが提供する描画メソッドを使用)。 - パス。線やその他の形状を(
NSBezierPath
クラスを使用して)描画できます。
また、ある時点でグラフィックスコンテキストを調べ、後続の描画操作に使用される属性(現在の色、影など)を設定して作業することもできます。
おそらく当面の懸念はありませんが、補足として、ある時点で、Cocoaのビュープログラミングガイドの「ビュー描画の最適化」セクションを確認する必要があります。描画操作は高速である必要があります。描画の一部のみを再描画するなど、描画、つまりアプリケーションをより効率的にするために実行できる基本的なことがいくつかある場合、描画のパフォーマンスの側面について人々があまり考慮していないことに驚かされることがあります。全体ではなく、実際に変更されたビュー。
最初から始める必要があります。