Лучший холст для рисования в wxPython?

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

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

Я провел некоторое исследование и сузил альтернативы до OGL (библиотека объектной графики) и FloatCanvas. Не хотелось бы опускаться до DrawingContext, но при необходимости он не отбрасывается.

Какой вариант полотна выбрать?


person Pablo Rodriguez    schedule 24.02.2010    source источник
comment
Я свой закатал. К сожалению, это было для работы, поэтому я не могу поделиться кодом. michaelfogleman.com/2009/01/work-project-generic -diagram-widget Теперь он выглядит даже лучше, с градиентами.   -  person FogleBird    schedule 23.04.2010


Ответы (2)


Я попробовал FloatCanvas, хотя было много работы, чтобы заставить все работать. Мне удалось справиться с такими вещами взаимодействия с мышью, как подключение, движение, автоматическое переподключение в случае движения и т. Д.

FloatCanvas также довольно хорош с точки зрения производительности и визуальных результатов. Сглаживание (1) (2) также можно улучшить их при необходимости.

person Pablo Rodriguez    schedule 22.04.2010

Похоже, что OGL не обновляется, и в целом FloatCanvas выглядит более современно. Я действительно не знаю достаточно глубоко два варианта.

Кажется, что захват событий проще с FloatCanvas. Я бы попробовал использовать его до OGL.

person AnotherOne    schedule 28.02.2010
comment
Связанный вопрос, кажется, дает больше очков для FloatCanvas: stackoverflow. com/questions/824628/ - person AnotherOne; 28.02.2010
comment
Ни OGL, ни FloatCanvas не обновляются активно. Если не считать пары исправлений, за пару лет ни в одном из них не было существенных коммитов. svn.wxwidgets.org/viewvc/wx/wxPython/3rdParty/FloatCanvas svn.wxwidgets.org/viewvc/wx/wxPython /trunk/wx/lib/ogl - person k107; 02.11.2011