Я использую нижний левый угол вместо верхнего левого, чтобы рисовать на iPhone, используя следующее:

CGContextTranslateCTM(context, 0.0, 200.0);
CGContextScaleCTM(context, 1.0, -1.0);

Хотя это отлично работает для изменения моего происхождения, чтобы нарисовать диаграмму, но маркировка отображается вверх ногами.

Как использовать мою систему координат, а также получить обычный прямой текст для правильной маркировки диаграммы, которую я рисую?

2
Roby 28 Июл 2009 в 22:43

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 — положения меток.

4
Jay 3 Авг 2009 в 18:01

Используйте CGContextSaveGState и CGContextRestoreGState, чтобы убедиться,
что масштабирование CTM применяется к вашей графике, а не к вашему тексту.

2
Rhythmic Fistman 28 Июл 2009 в 23:04