1

倍精度値を保持できる NSImageRep サブクラスの作成に興味があります。標準の NSBitmapImageRep は単精度浮動小数点数を保持できますが、倍精度浮動小数点数ではチョークします。私は NSBitmapImageRep が操作用のデータ バッファーを公開していることを気に入っており、表示用の画像に変換する必要がある別のバッファーを操作するのではなく、その場でデータを操作する機能を保持したいと考えています。

サブクラス化は、最も基本的な部分である画像の描画の処理方法がわからないことを除けば、かなり簡単だと思います。ドキュメントには、実装する必要があるメソッドとして -draw がリストされていますが、これは理にかなっていますが、ビットマップを描画する最良の方法は何ですか?

おそらくピクセルごとに1つずつ、多くの小さな長方形を描画するための1つのためらう提案を見ました: NSImageのカスタム画像表現を実装する方法

より効率的なアプローチはありますか?ビットマップ データを使用したカスタム NSImageRep の実際の例を調べましたが、見つけることができません。ほとんどの例では、ベクター データが使用されています。

また、実装するメソッドが単純に -draw であり、任意の形式の境界付き描画ではないことも興味深いと思います。NSImageRep 内から現在のクリッピング領域が何であるかを判断する方法や、不要な画像の部分を描画しないようにする方法はありますか?

4

1 に答える 1

1

この時点で、この投稿の解決策を見つけたと確信していますが、まだ興味がある場合は、ここに私の発見があります。

独自のNSImageRep方法を実装して分かったのは、効率の悪い方法がたくさんあり、必ずしも単純な方法だけを実装する必要がないということです-(BOOL)draw。の実装を提供すると-(BOOL)drawInRect:、ほとんどの場合、代わりに使用されます。実際、私のサブクラスでは、 が存在するときに呼び出されるNSImageRepのをまだ見ていません。-(BOOL)draw-(BOOL)drawInRect:

実際の描画には Core Graphics を使用しています。これにより、生データから画像を作成し、非常に高速でありながら、非常に多くの制御と精度で描画することができます。私の表現はまだかなり粗いですが、大きな画像を扱う場合でも高速です.

おそらく、古い標準 (TIFF、PNG、JPEG など) 以外の表現を追加する必要性がほとんどないため、主題全体にドキュメントがまったくありません。調査を行うのはかなりイライラするので、時間があれば、私が遭遇したすべてのことを詳述するブログ投稿を書くことについて見ていきます.

于 2014-06-22T02:33:32.253 に答える