Я хотел бы создать кроссплатформенную программу для рисования. Единственное требование для написания моего приложения - это точность на уровне пикселей на холсте. Например, я хочу написать свой собственный алгоритм рисования линий, а не полагаться на кого-то другого. Мне не нужна какая-либо форма сглаживания (опять же, требуется контроль уровня пикселей). Я бы хотел, чтобы взаимодействие пользователей на экране было быстрым и отзывчивым (в ожидании моей способности писать быстрые алгоритмы).
В идеале я хотел бы написать это на Python или, возможно, на Java в качестве второго варианта. Необходима возможность легко сделать финальное приложение кроссплатформенным. Я буду использовать разные API в разных ОС, если это необходимо, если я могу написать вокруг них слой абстракции. Есть идеи?
дополнение: мне нужна возможность рисовать на экране. Рисование в файл, который я разобрался.





QT Canvas и QPainter очень хороши для этой работы, если вы хотите использовать C++. и это кроссплатформенный.
Для QT есть привязка python, но я никогда ее не использовал.
Что касается Java, то при использовании SWT манипуляции с холстом на уровне пикселей несколько трудны и медленны, поэтому я бы не рекомендовал это. С другой стороны, Swing Canvas довольно хорош и отзывчив. Я никогда не использовал вариант AWT, но вы, вероятно, не захотите туда идти.
Библиотека Пиглет для Python может удовлетворить ваши потребности. Он позволяет использовать OpenGL, кроссплатформенный графический API. Вы можете отключить сглаживание и захват областей экрана в буфер или файл. Кроме того, вы можете использовать его системы обработки событий, загрузки ресурсов и обработки изображений. Вы, вероятно, также можете привязать его к PIL (Python Image Library) и, безусловно, Cairo, популярной кроссплатформенной библиотеке векторной графики.
Я упоминаю Pyglet вместо чистого PyOpenGL, потому что Pyglet обрабатывает множество уродливых вещей OpenGL прозрачно, без каких-либо усилий с вашей стороны.
В настоящее время мы с другом работаем над программой рисования с использованием Pyglet. Есть несколько причуд - например, OpenGL всегда имеет двойную буферизацию в OS X, поэтому мы должны рисовать все дважды, один раз для текущего кадра и еще раз для другого кадра, поскольку они переворачиваются при каждом обновлении дисплея. Вы можете посмотреть наш текущий прогресс в этом репозитории подрывной деятельности. (Splatterboard.py в trunk - это файл, который вы хотите запустить.) Если вы не умеете использовать svn, я был бы счастлив отправить вам по электронной почте архив .zip с последним исходным кодом. Не стесняйтесь воровать код, если заглянете в него.
На этой неделе я собрал несколько слайдов и демонстрационный код для создания 2-мерной графики с использованием OpenGL из python с использованием библиотеки pyglet. Вы можете увидеть мои вещи здесь: http://tartley.com/?p=378
Это очень быстро (условно говоря, для python). Мне удалось получить около 1000 независимо расположенных и ориентированных объектов, движущихся по экрану, каждый с примерно 50 вершинами.
Он очень портативен, весь код, который я написал в этой среде, работает в Windows, Linux и Mac (и даже в непонятных средах, таких как Pypy), и мне даже не нужно об этом думать.
Обновлять: Есть еще куча новых сообщений по той же теме: http://tartley.com/?cat=27
Я бы порекомендовал wxPython
Это прекрасно кросс-платформенный, и вы можете получить контроль на каждый пиксель, и если вы передумаете, вы можете использовать его с такими библиотеками, как pyglet или agg.
Вы можете найти несколько полезных примеров того, что вы пытаетесь сделать, в загрузке документации и демонстраций.
Если открыт выбор языка, возможно, найдется место для файла Flash, созданного с помощью Haxe. Haxe - это бесплатный и полноценный динамический язык программирования. Затем есть связанная Neko, виртуальная машина (например, Java, Ruby, Parrot ...) для работы на Mac, Windows и Linux. Будучи в некотором смысле новой улучшенной формой Flash, он, естественно, может рисовать. http://haxe.org/
Я понимаю, что это старый пост, но ссылка не работает.