2012-03-10 13 views
0

drawInRectメソッドを使用してNSImageでスプライトを描画しようとしています。私はすぐにrectに渡された座標がピクセルではなくポイントであることに気づいた。私はピクセルレベルの精度でスプライトを描画する必要があります。各スプライトは正確に73x92ピクセルの寸法です。NSImageでスプライトを描くには?

要するに、次のいずれかが必要なようです。 1)NSImageはピクセルで表され、他の単位ではありません。 2)ピクセルからNSImageユニットへの非常に正確な変換。アンチエイリアス効果によるピクセルのアドレッシングではぼやけが発生しません。

+1

なぜ個々の画像を別々の画像に分割するのではなく、 –

+1

あなたは私たちに例をあげなければならないでしょう。例えば画像の例では、75/72 dpiの変換のためにアンチエイリアスが発生する可能性があります。 –

+0

私はPeterと一緒です。画像を個別に読み込むことができるときにスプライトシートを使用するのはどうしてですか?私はiOS/OpenGL上でこれがパフォーマンスを向上させることができると理解していますが、Macは非常に強力で、スプライトシートを使う必要はほとんどありません。 –

答えて

1

これを不可能にするNSImageに根本的に間違いはありません。適切な送り元と送り先の矩形を与えると、ピクセルレベルの精度で確実に描画できます。あなたは私たちがその点で助けになるようにあなたのコードを投稿しなければなりません。

ただし、下位レベルのAPIを扱う方が簡単です。 NSImageは、ビットマップ、PDFなど、イメージのように見えるものと一緒に使えるように設計されています。その一般性とその時代は時々混乱します。私はCGImage(これは常にビットマップ)を使用する方がより予測可能なことが分かりました。または、NSBitmapImageRepを試してみてください。

+0

Pixels In Perchは 'NSImage'で重要な点に注意することも重要です。 'NSImage'はソースイメージファイルのPPIを尊重し、適切に描画します。あなたのソースイメージが72ppiでない場合、Grady Playerが指摘したように、アンチエイリアスを使用して描画されます。 'CGImage'と' NSBitmapImageRep'は純粋にビットマップ形式であり、ppiの使用は意味をなさない。 –

関連する問題