Как ПРАВИЛЬНО нарисовать изображение в верхнем левом углу на Mac?

У меня есть NSView в ScrollView, и я пытаюсь нарисовать в нем изображение. Проблема в том, что я хочу, чтобы верхний левый угол изображения был привязан к верхнему левому углу кадра, а не к нижнему левому углу, что и требует от меня View. Мне нужно будет иметь возможность увеличивать и уменьшать масштаб и вращать.

в настоящее время у меня есть система, в которой я вычисляю, сколько мне нужно перевести мое изображение, исходя из размера изображения и размера окна. Для этого мне нужно было создать дополнительное представление за пределами scrollview, чтобы я мог получить размер окна, не включая декорации. Затем я могу рассчитать размер представления на основе размера изображения и размера окна, и на основе ЭТОГО я могу выяснить, куда переводить изображение.

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

Есть ли другой способ сделать это?


person Brian Postow    schedule 23.07.2009    source источник


Ответы (1)


Если вы хотите, чтобы 0,0 находился в верхнем левом углу, то можно переопределить -isFlipped для возврата YES. Это не должно влиять на системы координат каких-либо подвидов (я думаю!), Но изображения, нарисованные непосредственно в перевернутом виде, будут отображаться в перевернутом виде, если вы не примените к ним преобразование.

Просмотр руководства по программированию для какао: просмотр геометрии

person Cody Brimhall    schedule 23.07.2009
comment
Да, как я уже сказал, это переворачивает изображение. Поворот на 180 градусов не помогает, потому что тогда изображение переворачивается. и NSAffineTransform, похоже, не имеет обратного преобразования. - person Brian Postow; 23.07.2009
comment
А, масштабирование X на 1 и Y на -1 похоже на то, как вы выполняете флип-преобразование! захватывающе! - person Brian Postow; 23.07.2009