問題タブ [nsaffinetransform]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - NSView での画像の描画
現時点では、画像を読み込んで描画し、理論的にはズームと回転を可能にする単純な Obj C プログラムがあります。私は NSAffineTranslations を使用しています。
画像を左上にロックしたいので (左下の PS/PDF 標準ではなく)、isFlipped を使用して [afTrans scaleXBy:1.0 yBy:-1.0]; を呼び出しています。
問題は、何らかの理由で、最初に drawRect が呼び出された後、変換が行われないことです。
画像を読み込むと、画像が表示され、正しく表示されます。ウィンドウのサイズを変更すると (drawRect を呼び出します)、画像は描画されますが、上下逆になります。これは、変換が有効にならなかったことを意味します。2回目以降のデータに違いは見られません。
これは、コードの簡素化されたバージョンです。
ETA: 関連するかもしれないいくつかのコードを次に示します。
objective-c - NSAffineTransformを使用した場合と使用しない場合のNSImageの回転
NSViewのサブクラスにNSImageが描画されています。前の質問で、私はそれを左上隅に直立させるのを手伝ってくれました。ここで、画像を回転できるようにしたいと思います。回転変数%4をインクリメントするボタンがあり、これに-90を掛けて回転角を求めます。次に、NSAffineTransformを使用して画像を回転し、画面に変換し直します。ただし、期待どおりに機能していないようです。私には2つの問題があります。
1)回転すると、前のフレームになかった領域にある画像の部分が正しく描画されます。ただし、以前そこにあったポーションは元の画像のままです。これは、数回転した後、元の直立した画像の正方形があり、次に回転画像の下または左に長方形があることを意味します。
2)ウィンドウのサイズを変更すると、画像は元の直立した向きで(本来あるべきように)再描画されます。
基本的に、NSAffineTransformは私が思っているようには機能しないという結論に達しました。画像を回転(および平行移動)する他の方法はありますか?ありがとう
大きなコードチャンク:(「WORKS」と「endworks」の間のコードは、画像を描画するための作業コードです。これは私の前の質問からのものです)。
[古いコードが削除され、下のコードが新しいコードに置き換えられました]
ありがとう
編集:もう少し調査すると、NSAffineTtransformを実行する代わりに、ビューを回転できることがわかりました。これはうまくいくようです。ただし、翻訳を正しく機能させることができません。以下の新しいコード(スペースを節約するために元のコードが削除されました)
cocoa - nscellを回転させる方法
NSLevelIndicatorCellのサブクラスを作成していて、それを垂直に描画したいと思います。これは機能しません、私は何を間違っているのですか?
cocoa - NSAffineTransform のメモリ不足
NSAffineTransform を使用して NSImage を回転/反映していますが、大きな画像を使用するとエラーが発生します:
ここで変換している画像は、4110px x 2735 で 6,998,487 バイトです。NSAffineTransform は、この変換を行うためにこれほど多くのメモリが本当に必要ですか、それともどこかで間違っていますか? 私のローテーションコードは次のとおりです。
プロジェクトで ARC を使用しています。前もって感謝します、ベン
cocoa - NSImage を変換およびスケーリングする方法は?
これまで、ユーザーが画像を NSImageView にドラッグ アンド ドロップできるアプリケーションを作成しました。ただし、画像をクリックしてマウスボタンを押したままにして、その場所を移動するだけで、これらの画像を移動できるようにしたいと考えています。
画像を設定した後、NSImageView を操作して変換/スケーリングするにはどうすればよいですか? それは可能ですか?NSAffineTransform について読んだことがありますが、画像自体を作成する前に画像を移動しているようです。キャンバスに既に画像があり、画像をクリックして押したままマウスで移動したいだけです。誰か助けてください!
macos - isFlipped YESを使用したカスタムビューでの奇妙なサイズ変更
サブビューを適切に動作させるのに苦労しています。
自動レイアウトを使用しています。私のメインウィンドウはNSSplitView
. 分割ビューのビューの 1 つは、私が設定したカスタム ビューです。
このビューに追加されたサブビューが左上に表示されます。サブビューはスーパービューよりもはるかに小さいため、下部にスペースが残っています。ウィンドウ(およびスーパービュー)のサイズを変更すると、問題が発生します。以下のように、サブビューがビューの外に移動します。最初の図は、サブビューの上部がスーパービューの上部にうまく配置されていることを示しています。
ウィンドウのサイズを変更すると、上部に次のように表示されます。
これは起こらないはずです。どちらかといえば、サブビューを下部でクリップする必要があります。サブビューの左上は、常にスーパービューの左上にある必要があります。
私はどこかで間違いを犯したと確信しています - 誰かがこの動作を認識していますか? 残念ながら、私は少し前に物事を台無しにしてしまい、どこを見ればよいのかわかりません。どんな助けでも大歓迎です!
objective-c - NSAffineTransform は Mac OS X 10.11 で異なる座標系を持っていますか?
私のプロジェクトは Mac OSX 10.10/10.9 では問題なく動作しますが、10.11 では次のコードを使用すると正しく動作しません。
これを変更すると [transform translateXBy:-bound.origin.x yBy:-bound.origin.y];
に
[transform translateXBy:bound.origin.x yBy:bound.origin.y];
アプリケーションは OSX 10.11 では正しく動作しますが、OSX 10.10/10.9 では正しく動作しません...
理由はわかりませんが、最新の Mac OS X 10.11 では NSAffineTransform の座標系が異なるのですか? この問題を解決して、アプリケーションを 10.10/9 と 10.11 の両方に対応させるにはどうすればよいですか? ありがとう。