LINUX.ORG.RU

Рисование на Python 3, генерирование изображения по шаблону

 ,


0

1

Доброго времени! Есть задача создать приложение, которое смогло бы генерировать изображение по заданному шаблону. Например есть шаблон:

a = [1,0,1
     0,1,0
     1,0,1]
Нужно заполнить холст по этому шаблону предварительно выбрав фигуру, которая будет вставать на место 1. В дальнейшем потребуется задавать цвет путем так называемой заливки этих фигурок, кликая на них. Куда копать? С рисованием в питоне не сталкивался вообще...

Простым решением этой задачи может быть PyGame. Более продвинутый вариант — PyOpenGL.

grazor ★★
()

выбрав фигуру

Если фигуры не сложные, то можно pygtk взять. Вот, примерно так выйдет: http://pastebin.com/MpmcKuz3

Там тот же cairo, только в окошке и можно кликать и анимировать.

В принципе, в cairo можно писать текст. Если взять подходящий шрифт, то можно будет достаточно просто создавать более сложные фигуры. Можно растром фигуры рисовать, но я не знаю, сложно ли менять будет у них цвет. Конечно, если тебе очень захочется рисовать векторные фигуры, то свелосипедить простенький парсер SVG-путей не составит большого труда (мне так кажется).

anonymous
()
Ответ на: комментарий от anonymous

задавать цвет путем так называемой заливки этих фигурок

Патчик для выбора цвета:

@@ -48,11 +47,17 @@
 def click(da, e):
     global COLORS
     
+    csd = Gtk.ColorSelectionDialog('Select color')
+    csd.set_transient_for(da.get_parent())
+    csd.run()
+    csd.hide()
+    color = csd.get_color_selection().get_current_color()
+    
     w, h, xs, ys = get_size_and_scale(da)
     
     x = int(e.x / xs)
     y = int(e.y / ys)
-    COLORS[y][x] = (random(), random(), random())
+    COLORS[y][x] = (color.red_float, color.green_float, color.blue_float)
 
     da.queue_draw()

anonymous
()
Ответ на: комментарий от anonymous

Вот это да! Не ожидал. В принципе я уже смотрел в сторону canvas из Tkinter, но тут смотрю гораздо интереснее получается. Спасибо за наводку и исходник, буду делать.

soulectro
() автор топика
Ответ на: комментарий от soulectro

Пожалуйста )

Вот тут ещё есть примеры для cairo и GTK. Но учти, что код там семилетней давности, поэтому тупая копипаста может не сработать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.