На этом шаге мы перечислим методы класса Drawing, применяемые для рисования фигур.
Для собственно рисования класс Drawing предоставляет следующие методы:
>>> from wand.image import Image as WandImage >>> from wand.drawing import Drawing >>> from wand.color import Color >>> from wand.display import display >>> img = WandImage(width = 400, height = 300, background = Color("white")) >>> draw = Drawing() >>> draw.stroke_color = Color ("black") >>> draw.point(100,200) >>> draw.draw(img) >>> display (img)
>>> draw.stroke_color = Color ("blue")
>>> draw.line ((0, 0), (400, 300))
>>> draw.draw(img)
>>> display (img)
Результат построения приведен на рисунке 1.
Рис.1. Построение линии средствами Wand
rectangle (left=<X1>, top=<Y1>, right=<X2>, bottom=<Y2> | width=<Ширина>, height=<Высота> [, radius=<Paдиус скругления> | xradius=<Paдиус скругления по горизонтали>, yradius=<Paдиус скругления по вертикали>])
Параметры left и top задают горизонтальную и вертикальную координаты верхнего левого угла. Размеры прямоугольника можно задать либо координатами нижнего правого угла (параметры right и bottom), либо в виде ширины и высоты (параметры width и height). Можно задать либо радиус скругления углов и по горизонтали, и по вертикали (параметр radius), либо отдельно радиусы скругления по горизонтали и вертикали (параметры xradius и yradius). Если радиус скругления не задан, прямоугольник будет иметь острые углы. Пример:
>>> img = WandImage(width = 400, height = 300, background = Color("white")) >>> draw = Drawing() >>> draw.stroke_color = Color ("rgb (67, 82, 11)") >>> draw.fill_color = draw.stroke_color >>> draw.rectangle (left = 100, top = 0, right = 150, bottom = 50) >>> draw.rectangle (left = 200, top = 0, width = 50, height = 50, radius = 5) >>> draw.rectangle (left = 300, top = 0, width = 50, height = 100, xradius = 5, yradius = 15) >>> draw.draw(img) >>> display (img)
Результат построения приведен на рисунке 2.
Рис.2. Построение прямоугольников средствами Wand
>>> img = WandImage(width = 400, height = 300, background = Color("white")) >>> draw = Drawing() >>> draw.stroke_color = Color ("rgb (0, 127, 127)") >>> draw.fill_color = Color ("rgb (127, 127, 0)") >>> draw.polygon([(50, 50), (350, 50), (350, 250), (50, 250)]) >>> draw.draw(img) >>> display (img)
Результат построения приведен на рисунке 3.
Рис.3. Построение многооугольника средствами Wand
>>> img = WandImage(width = 1000, height = 500, background = Color("green")) >>> draw = Drawing() >>> draw.stroke_color = Color ("black") >>> draw.fill_color = Color ("white") >>> # Рисуем окружность радиусом 100 пикселей >>> draw.circle ((200, 150), (100, 150)) >>> draw.stroke_color = Color ("white") >>> draw.fill_color = Color ("black") >>> # Рисуем окружность радиусом 200 пикселей >>> draw.circle ((550, 250), (350, 250)) >>> draw.draw(img) >>> display (img)
Результат построения приведен на рисунке 4.
Рис.4. Построение окружностей средствами Wand
>>> img = WandImage(width = 500, height = 500, background = Color("green")) >>> draw = Drawing() >>> draw.stroke_color = Color ("black") >>> draw.fill_color = Color ("white") >>> draw.ellipse ( (200, 150), (200, 50), rotation = (20, 110)) >>> draw.draw(img) >>> display (img)
Результат построения приведен на рисунке 5.
Рис.5. Построение сектора средствами Wand
>>> img = WandImage(width = 500, height = 500, background = Color("red")) >>> draw = Drawing() >>> draw.stroke_color = Color ("green") >>> draw.fill_color = Color ("blue") >>> draw.arc ( (10, 10), (290, 290), (20, 110)) >>> draw.draw(img) >>> display (img)
Результат построения приведен на рисунке 6.
Рис.6. Построение дуги с заливкой средствами Wand
>>> img = WandImage(width = 500, height = 500, background = Color("white")) >>> draw = Drawing() >>> draw.stroke_color = Color ("red") >>> draw.fill_color = Color ("green") >>> draw.bezier ( [ (70, 167), (220, 109), (53, 390), (122, 14)]) >>> draw.draw(img) >>> display (img)
Результат построения приведен на рисунке 7.
Рис.7. Построение кривой Безье средствами Wand
Вы уже, наверно, заметили, что каждый набор выражений, рисующих какую-либо фигуру, завершен вызовом метода draw() класса Drawing. Дело в том, что описанные здесь методы, выполняющие рисование различных фигур, лишь говорят библиотеке wand, что нужно нарисовать, но реально ничего не делают. Чтобы дать команду собственно выполнить рисование, следует вызвать метод draw (<Изображение, на котором выполняется рисование>) :
>>> draw.draw (img)
На следующем шаге мы рассмотрим утилиту IMDisplay.