Как нарисовать наклонный эллипс в ImageDraw? - PullRequest
0 голосов
/ 24 августа 2011

Я пытаюсь нарисовать наклонный эллипс при рисовании изображения. Тем не менее, я не уверен, как его определить, поскольку, хотя приведенная ниже схема будет перемещать точки, я думаю, что это просто раздавит эллипс, а не повернет его (также я думаю, что в любом случае с преобразованием что-то немного не так). Я передаю вывод этой функции в команду ellipse и добавляю ее к существующему изображению, поэтому любые методы, которые будут вращать все изображение, бесполезны. OD - это просто квадратное смещение относительно центра координат, который я использую.

def ellipsebound(major, minor, tilt=0, offset=0,  angle=0):
    #creates a bound for an ellispe, defined with tilt meaning to rotate the orthogonal axis and angle corresponds to rotating the ellipse position
    angle = radians(angle)
    tilt = radians(tilt)
    box=(
    1 + int(ceil((OD+offset*cos(angle)+(major*cos(tilt)+minor*sin(tilt)))/conv)), 
    1 + int(ceil((OD+offset*sin(angle)+(major*sin(tilt)-minor*cos(tilt)))/conv)),
 int(ceil((2*OD-(OD-offset*cos(angle)-(major*cos(tilt)+minor*sin(tilt)))/conv))),
 int(ceil((2*OD-(OD-offset*sin(angle)-(major*sin(tilt)-minor*cos(tilt)))/conv)))
 ) #create bounding box
    return box

Кто-нибудь знает, как этого добиться?

1 Ответ

2 голосов
/ 24 августа 2011

Похоже, что у «прямоугольника», который используется для рисования эллипса, нет вращения, связанного с ним.Он просто определяется (левым, верхним, правым, нижним) экстентами.

Один из возможных обходных путей (в зависимости от того, что вам нужно сделать) - это нарисовать эллипс (с правильными размерами, но без поворота) напромежуточное изображение, используйте метод image.rotate(), а затем вставьте его в целевое изображение.

Надеюсь, это поможет.

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