1

NSView のサブクラスを含むウィンドウがあります。ビュー内に、NSImage を配置します。

画像の (新しい) 左上隅をビューの左上隅に保ちながら、画像を 90 度回転できるようにしたいと考えています。もちろん、画像を回転させてから、元の位置に戻すために移動する必要があります。

カーボンでは、私が望むことを行う CGContextRotateCTM を見つけました。ただし、ObjC で適切な呼び出しが見つかりません。setFrameCenterRotation は何もしていないように見えますし、setFrameRotation では原点がどこにあるのかわからないようなので、適切に翻訳できます。

動くようです。ウィンドウのサイズを変更すると、画像が配置され(またはその一部、奇妙なクリッピングの問題があるようです)、スクロールすると、別の(必ずしもsaemではない)場所にジャンプします。

これは誰にとっても意味がありますか?

ありがとう

4

1 に答える 1

7

私が取り組んでいるアプリの画面上のテキストを回転させます.Cocoa(質問ではObjCではなくCocoaを意味すると思います)の方法は、NSAffineTransformを使用することです.

これはあなたが始めるためのスニペットです

double rotateDeg = 90;
NSAffineTransform *rotate = [[NSAffineTransform alloc] init];
NSGraphicsContext *context = [NSGraphicsContext currentContext];

[context saveGraphicsState];
[rotate rotateByDegrees:rotateDeg];
[rotate concat];

    /* Your drawing code [NSImage drawAtPoint....]for the image goes here 
       Also, if you need to lock focus when drawing, do it here.       */

[rotate release];
[context restoreGraphicsState];

回転に関する数学は、ここで少しトリッキーになる可能性があります。これは、上記が描画先の座標系を回転させるためです。私の 90 度の回転は反時計回りです。

于 2009-06-30T19:01:32.117 に答える