Как нарисовать так в drawRect? - PullRequest
0 голосов
/ 25 апреля 2011

проблема разработки iPhone: Я хочу нарисовать четырехугольник с четырьмя черными углами (CGPoint) изменяемого четырехугольника. Я переопределил метод drawRect, но он показывает только прямоугольник вместо четырехугольника. Значит ли это, что drawRect может рисовать прямоугольники только с четырьмя CGPoints?

Исходным требованием является изменение формы четырехугольника путем касания и перемещения любой из угловых точек. Могу ли я решить эту проблему путем переопределения drawRect? я должен сделать что-то еще? спасибо.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2011

, в частности, рамка вашего представления определяет origin{x,y}, а size{width,height}.

это простой прямоугольник.

также передается прямоугольник для аргументов рисования.

чтобы ваше представление представляло четырехугольник более сложный, чем прямоугольник, вы должны написать несколько пользовательских преобразований геометрии (если функция уже не существует). Есть много API для облегчения этого (например, NSBezierPath / UIBezierPath).

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

, так как вы хотите 4 подвижные точки внутри прямоугольника, вы должны определить 4 точки (например, CGPoint) - по одной для каждого угла. сделать эти ивары подкласса вашего представления. когда они изменятся, сделайте вид недействительным, если это необходимо.

0 голосов
/ 25 апреля 2011

-drawRect: - это место, где вы помещаете свой код для рисования, и этот код может рисовать практически все, что вы хотите.Вы, конечно, не ограничены прямоугольниками.Я не уверен, что следую конкретной природе вашей проблемы - это очень поможет, если вы напишете какой-нибудь код.В общем случае -drawRect: - это правильное место для размещения вашего кода для рисования, и если ваш вид отрисовывается не так, как вам нужно, это, скорее всего, связано с проблемой в вашем коде, а не с ограничением метода -drawRect:.

...