Библиотека Python Canvas для геометрических фигур [закрыто]

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

В основном я пытаюсь сделать это: http://alteredqualia.com/visualization/evolve/ в Python.

12.12.2008 04:24:00
8 ОТВЕТОВ

Pygame должна быть в состоянии сделать это для вас.

Смотрите pygame.draw.polygon

1
20.09.2017 20:15:38

Я думаю, что Каир будет делать то, что вы хотите. У них также есть привязки к Python .

Единственное требование, которое вам не поможет, - это изменение ранее нарисованных полигонов, но я не знаю ни одного холста, который бы сделал это для вас.

5
12.12.2008 05:56:50

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

0
12.12.2008 06:42:06

Похоже, работа для OpenGL .

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

2
12.12.2008 08:02:21

И Qt, и wxWidgets имеют некоторые возможности рисования на холсте (Qt называет это GraphicsView). Быстрый поиск Google даст вам множество примеров, чтобы вы могли увидеть, соответствует ли он вашим требованиям.

0
12.12.2008 08:28:07

В этом обсуждении Stackoverflow есть некоторые сравнения и фрагменты кода для различных наборов инструментов GUI для Python. Я почти уверен, что QGraphicsView на QT сделает прозрачность. Nokia (урожденная Troll) делает демонстрационный пакет для QT, который должен дать вам представление о его возможностях.

2
23.05.2017 10:32:49

Попробуй Пиглет . Это графическая библиотека для Python с OpenGL. Если вы раньше занимались программированием на OpenGL, это, безусловно, самый простой способ получить то, что вы хотите.

1
12.12.2008 09:23:21

Я считаю, что HTML-холст позволяет вам изменять элементы

Это не. Вы можете проверить мой учебник по холсту HTML, чтобы увидеть, как вы рисуете движущийся шар; Вы протираете экран и рисуете новый круг в нужном месте.

Вы можете рисовать простые формы на холсте во всех стилях pyglet, pygame, QT, Tkinter, wxPython и cairo.

Как правило, у вас будут объекты, называемые «спрайтами» или «фигурами», которые представляют объекты, нарисованные на экране, и вы будете хранить их все в контейнере. Затем библиотека или фреймворк в каждом кадре будут отображать их все на холсте. Таким образом, пользователю (вам) будет казаться, что вы можете изменять объекты на экране; Вы устанавливаете координаты x и y шара, и в следующем кадре он отображается там. Однако на низком уровне все снова стирается и перерисовывается.

Для ресурсоемкой анимации будет использоваться метод, называемый двойной буферизацией , при котором битовая карта в памяти будет изменена вместо одной на экране, а затем процесс рисования будет просто копировать эту битовую карту на экран.

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

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

1
12.12.2008 15:34:09
«Вы протираете экран и рисуете новый круг в нужном месте» - хотя это действительно так, это не является реальной проблемой с точки зрения производительности. я делал нечто подобное, и большую часть времени уходит на сравнение изображений (оценку пригодности), а не на рисование. штраф не должен быть слишком большим.
stefs 11.02.2010 11:39:15
Я не говорил, что это проблема производительности, просто вы не можете изменять элементы, которые находятся на холсте; Вы должны нарисовать все, что изменилось.
llimllib 11.02.2010 17:44:37