Я использую нижний левый угол вместо верхнего левого, чтобы рисовать на iPhone, используя следующее:
CGContextTranslateCTM(context, 0.0, 200.0);
CGContextScaleCTM(context, 1.0, -1.0);
Хотя это отлично работает для изменения моего происхождения, чтобы нарисовать диаграмму, но маркировка отображается вверх ногами.
Как использовать мою систему координат, а также получить обычный прямой текст для правильной маркировки диаграммы, которую я рисую?
2 ответа
Да, мне совсем недавно пришлось решать ту же проблему. Хитрость заключается в том, чтобы ненадолго отменить «инверсию» непосредственно перед написанием меток:
NSPoint p = NSMakePoint(x+5,5);
CGContextSaveGState(ctx);
CGContextTranslateCTM(ctx, 0, b.origin.y+y+25); // Flip temporarily for text
CGContextScaleCTM(ctx, 1.0, -1.0);
[string drawAtPoint: p withAttributes:nil]; // Draw your strings
CGContextRestoreGState(ctx); // Flip back
Обратите внимание, что значение b.origin.y — это высота видимой области, а x и y — положения меток.
Используйте CGContextSaveGState
и CGContextRestoreGState
, чтобы убедиться,
что масштабирование CTM применяется к вашей графике, а не к вашему тексту.
Похожие вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].