كيفية التعامل مع مصفوفة الترجمة في نقطة المحور Y مقلوب نظر

StackOverflow https://stackoverflow.com/questions/601751

سؤال

وبلدي usercase هو تطبيق اي فون حيث أن أفعل للرسوم المتحركة على نطاق والتناوب والترجمة للصورة.

وهكذا، I CONCAT كل شيء وذلك لتغذية الممتلكات تحويل، ولكن هناك مشكلة واحدة:

ومنذ صوري تختلف في الحجم، بل هو مشكلة الموقف منها بشكل صحيح. أنا معتاد على محور ذ مقلوب نظام الإحداثيات، لذلك أريد صورة بلدي إلى وضعه بالضبط في 60 بكسل في محور ذ.

وهكذا، كيف يمكنني تغيير من المحور ص ديكارت الأصلي إلى نقطة ذ محور مقلوب من الرأي؟

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

المحلول

وكما smacl يشير، وأسهل طريقة للقيام بذلك هي لتحويل الأصل إلى أسفل يسار الشاشة باستخدام (screenheight - viewheight - ذ). بدلا من سنوي في أصول وجهات نظركم

ومع ذلك، يمكنك الوجه نظام الإحداثيات من طبقات شاشة العرض الرئيسية الخاصة بك باستخدام CATransform3D. أفعل هذا حتى أستطيع أن تشترك في نفس الأساسية الرسوم المتحركة CALayer كود التخطيط بين طلبي اي فون وماك العميل (اي فون المقلوب الكوارتز العادي تنسيق نظام CALayers إلى المباراة التي من UIViews). كل ما عليك القيام به لتمكين هذا هو وضع خط

self.layer.sublayerTransform = CATransform3DMakeScale(1.0f, -1.0f, 1.0f);

وفي رمز التهيئة الخاص بك عن UIView استضافة طبقة. تذكر أن هذا سوف الوجه CALayers الخاصة بك، لذلك أي جعل النص UIKit في تلك الطبقات قد تحتاج أيضا إلى أن انقلبت باستخدام رمز مشابهة لما يلي:

CGContextSaveGState(context);
CGContextTranslateCTM(context, 0.0f, self.frame.size.height);
CGContextScaleCTM(context, 1.0f, -1.0f);

UIFont *theFont = [UIFont fontWithName:@"Helvetica" size:fontSize];
[text drawAtPoint:CGPointZero withFont:theFont];

CGContextRestoreGState(context);

ويمكنك القيام بنوع مماثل من انعكاس باستخدام CGAffineTransform، ولكن سوف تحتاج أيضا إلى تطبيق الترجمة لجعل هذا العمل:

CGAffineTransform flipTransform = CGAffineTransformMakeTranslation(0.0f, self.frame.size.height);
flipTransform = CGAffineTransformScale(flipTransform, 1.0f, -1.0f);

وأنت قد تكون قادرة على استخدام أفيني تحويل لتحويل أصلك ينسق باستخدام CGPointApplyAffineTransform ().

نصائح أخرى

لكل تنسيق ذ، ص = أعلى ذ، حيث أعلى هو تنسيق سنويا من الجزء العلوي من المربع المحيط كنت في الرسم.

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