RotateCTM заставляет графику исчезать, Quartz 2D - PullRequest
0 голосов
/ 28 июня 2011

Во-первых, я кварц 2d нуб.У меня есть круговая диаграмма, и я в основном хочу сделать линию, выходящую из нее по диагонали, в северо-восточном квадранте, затем повернуть горизонтально вправо и иметь метку, объясняющую, что это за раздел.Итак, у меня есть этот код, который рисует диагональную линию.Линия проходит на юго-восток.Я ожидаю, что это связано с происхождением iPhone в северо-западном квадранте.Поэтому я подумал, что мог бы сначала повернуть CTM на 3pi / 2, а затем заставить работать тот же код.Однако, когда я раскомментирую строку CGContextRotateCTM (), я не получаю строку.Я не уверен, что здесь происходит и где логическая ошибка.Спасибо.

   CGPoint circleCenter = CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2);   
    CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]);
    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
    CGContextSetLineWidth(context, LINE_WIDTH);
    CGContextBeginPath(context);
//    CGContextRotateCTM(context, 3 * M_PI / 2);
    CGContextMoveToPoint(context, circleCenter.x + self.CircleRadius / 2, circleCenter.y + self.CircleRadius / 2);
    CGContextAddLineToPoint(context, circleCenter.x + self.CircleRadius / 2 + LINE_LENGTH, circleCenter.y + self.CircleRadius / 2 + LINE_LENGTH);
    CGContextStrokePath(context);

1 Ответ

0 голосов
/ 29 июня 2011

Это кажется Вы вращаете свою линию вне поля зрения. Всегда имейте в виду, что вы вращаетесь вокруг - возможно, также сначала переведите CTM.

Изменить: Чтобы проверить, вы можете попробовать очень маленькие повороты постепенно и посмотреть, куда идет ваша линия.

...