سؤال

ولدي نافذة مع فئة فرعية من NSView في ذلك. داخل عرض، ووضع NSImage.

وأريد أن أكون قادرة على تدوير الصورة بمقدار 90 درجة، والحفاظ على (جديد) الزاوية اليسرى العليا من الصورة في الزاوية اليسرى العليا من وجهة النظر. وبطبيعة الحال، سوف يكون لي لتدوير الصورة، ومن ثم ترجمتها إلى وضع أصل إلى مكانها.

في الكربون، وجدت CGContextRotateCTM الذي يفعل ما أريد. ومع ذلك، لا يمكن العثور على دعوة الحق في ObjC. لا يبدو setFrameCenterRotation لفعل أي شيء، وفي setFrameRotation، وأنا لا يمكن أن يبدو لمعرفة أين الأصل هو، حتى أتمكن من ترجمة approprately.

ويبدو للتحرك. عندما كنت تغيير حجم الإطار أنه يضع صورة (أو جزء منه، ويبدو لي أن لديك مشكلة لقطة غريبة وأهلا وسهلا) وعندما انتقل، فإنه يقفز إلى (وليس دائما SAEM) موقع مختلف.

هل هذا معقول إلى أي شخص؟

وذلك بفضل

هل كانت مفيدة؟

المحلول

وأنا استدارة النص على الشاشة للحصول على التطبيق أعمل على والكاكاو (أفترض أنك يعني الكاكاو وليس ObjC في سؤالك) طريقة للقيام بذلك هو استخدام 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 درجة هو دوران عكس اتجاه عقارب الساعة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top