Рисование с Mono в GTK # без вызова события Expose - PullRequest
0 голосов
/ 18 июня 2011

Мне нужно создать программу для проверки некоторых процедурных алгоритмов создания мира, для которых мне нужна поверхность для рисования. Однако виджет DrawingArea для GTK # требует, чтобы все рисование выполнялось в ExposesEvent. Как и в каком виджете я могу нарисовать, не проходя через этот обработчик событий? Основная проблема заключается в том, что я не могу оставить обработчик рисования присоединенным к событию, потому что одна и та же область рисования используется несколькими алгоритмами, поэтому после завершения рисования я удаляю его. Если я изменю размеры или переместлю окно, все сгенерированные рисунки исчезнут, что не очень полезно.

Я попытался использовать Mono.Cairo вместо System.Drawing, но, похоже, к нему применяется то же правило. Заранее спасибо.

1 Ответ

2 голосов
/ 19 июня 2011

Вам нужно использовать автономное растровое изображение (с Gtk / Gdk) или поверхность (Cairo), чтобы вы рисовали все на нем, а когда наступает событие expose, вы просто копируете изображение в виджет отображения,См. https://github.com/mono/gtk-sharp/blob/master/sample/Scribble.cs для примера Mono.Cairo (и проверьте более ранние версии этого файла для кода без Каира, но я предлагаю использовать Cairo для продвижения вперед).

...