2011-02-10 14 views
3

私はココアのUI要素のいくつか、主にボタン用のアイコンを描画しようとしていますが、私が望むような精度を得ることは非常に困難です。ココアでピクセル完全描画を取得する方法

[[NSColor redColor] set]; 
[NSBezierPath strokeRect:myRect]; 

をしかし、私が見ていると、赤い四角形のラインは常に色あせされている。

私は四角形を描画するために、このように、超簡単なコードを使用しています。

私はここで何が欠けていますか?

+0

NSBezierPathのパフォーマンスに極端な問題があります。矩形に使用してもよろしいですか? –

+0

私は元のポスターがもっと複​​雑な描画をしようと思っていますが、最初にrectを描画しようとしました。 –

+0

はい、これは私が作ることができるほど簡単な例でしたが、私はNSBezierPathのパフォーマンスヒットを認識していなかったので、代替案を検討します。 – BenL0

答えて

8

実際にココア座標は描画したいピクセルの中心を指定します。たとえば、左下のピクセルを描画する場合は、座標(0.5,0.5)を使用する必要があります。

ピクセルの半分を座標に加算/減算すると、ピクセルが完全である必要があります。

+0

シンプルなので、ありがとう - 私はドキュメントのどこにも見なかった。 – BenL0

0

あなたは、このようなあなたのグラフィックスコンテキストのためのアンチエイリアシングを無効にすることができます

[[NSGraphicsContext currentContext] setShouldAntialias:NO]; 

または上のアンチエイリアシングを維持しながら、あなたが代わりにベジェパスのNSFrameRectを使用することができ、そしてそれはあなたが望む精度を得るでしょう:

NSFrameRect(myRect); 
+1

この投稿はなぜ投票されたのですか?その正しい答えは –

+1

です。おそらく、アンチエイリアスを無効にすることは良い考えではないからです。 –

+0

これは正解ではありません。ポスターの問題を回避する方法です。ヤコブの答えを見てください。 – Jay

関連する問題