NSImage のオリジンを変更することは可能ですか? もしそうなら、どうすればこれを行うことができますか。私は通常のデカルト座標系に負の値を持つ座標をいくつか持っており、NSImage の対応するポイントにそれらを描画しようとしていますが、原点が (0,0) にあるため、いくつか欠落しています。
編集:ポイント(-10、-10)の画像に対して行う必要がある描画アスペクトがあるとしますが、現在これは表示されません。それを修正する方法はありますか?
NSImage のオリジンを変更することは可能ですか? もしそうなら、どうすればこれを行うことができますか。私は通常のデカルト座標系に負の値を持つ座標をいくつか持っており、NSImage の対応するポイントにそれらを描画しようとしていますが、原点が (0,0) にあるため、いくつか欠落しています。
編集:ポイント(-10、-10)の画像に対して行う必要がある描画アスペクトがあるとしますが、現在これは表示されません。それを修正する方法はありますか?
iOS のような場合 (コードを少し変更する必要があるかもしれません) で、私の記憶がまだ残っている場合は、origin
readOnlyであるため、これを行う必要があります。
CGRect myFrame = yourImage.frame;
myFrame.origin.x=newX;
myFrame.origin.y=newY;
yourImage.frame = myFrame;
NSImage とコンテナを混同していると思います。NSImage には境界やフレームがないため、原点がありません。バートマップ表現のピクセル寸法を表すサイズ(存在 する場合) またはバウンディング ボックス (ベクトル画像の場合) を表すサイズがあります。(-10,-10) のピクセル位置で画像を描画することは、実際には意味がありません。
NSImage はコンテナ (通常は NSImageView) に表示され、コンテナの bounds.origin は imageView に対する画像の配置を指示しますが、ビットマップ プレーンの端を超えるピクセルを変更することはできません。
いずれにせよ、カスタム描画の drawRect メソッドをオーバーライドするサブクラス化された NSView を使用したいと思うでしょう。NSViewにはbounds.origin がありますが、これは描画内の座標には関係ありませんが、ビューの境界ボックスに対する描画されたコンテンツ全体の位置に関係しています。描画先の座標系は、(通常) 原点 (0,0) を左下隅 (OSX) または左上隅 (iOS) に固定するグラフィックス コンテキストを参照します。デカルト平面で負の点を表現しようとしている場合は、平行移動変換を適用して、点をこの正の座標空間にマッピングする必要があります。
Apple がQuartz 2D Programming Guideで非常に詳細に説明していることを、悪いことに、私はいくつかの言葉で説明しようとしています。