Я пишу Python-модуль, который должен обеспечивать простой интерфейс ООП для низкоуровневых графических платформ. Для этого необходимо создать класс-оболочку, который используется классами в модуле.
Это (пока) диаграмма классов для базовой реализации.
Этот вопрос на самом деле не о дизайне пакета, но если у вас есть вопросы к нему или есть идея, что может быть лучше, я не буду возражать против комментариев / критиков.
Класс DrawArea является связующим звеном между платформой низкого уровня и классами в пакете. События обычно начинаются здесь, поскольку оболочка должна распознавать события мыши / клавиатуры и сообщать об этом своим детям.
Теперь, как вы можете видеть, класс DrawArea должен реализовывать некоторые функции для отображения базовых элементов в графическом интерфейсе. Теперь я хотел бы узнать о магии рендеринга кругов, скругленных прямоугольников, линий (с толщиной) и о сглаживании. Одна из причин этого заключается в том, что я просто заинтересован в этой теме, а другая в том, что я хотел бы представить реализацию с пакетом. (Будет написано на C / C ++, я уверен, что Python будет медленным для таких операций рендеринга, не так ли?)
Теперь мои вопросы :
- Есть ли хорошие ссылки на то, как визуализировать круги, эллипсы, скругленные прямоугольники или линии (с толщиной, однопиксельная линия проста ...)?
- Есть ли хорошие рекомендации о том, как реализовать сглаживание?
- Например, сглаживание выполняется при рендеринге элемента или применяется после выполнения всех операций рендеринга?
- Было бы лучше использовать что-то вроде
Path
класса, который будет отображаться? То есть векторизованное представление формы, которая должна быть представлена. Это имело бы преимущество для рендеринга любых видов двумерных форм, но я не знаю, как это реализовать. Есть хорошие ссылки для рендеринга векторной графики?