Я не привык к GTKmm (вместо этого я использую API C и Python), но с вашим примером это выглядит довольно просто.Вы просто хотите использовать Gtk::DrawingArea
вместо корневого окна.Таким образом, вы ищете в документации Gdk::Window::get_default_root_window
и обнаруживает, что он возвращает Gdk::Window
.
Теперь вы должны найти, как получить Gdk::Window
из Gtk::DrawingArea
,Таким образом, вы переходите к документации Gtk::DrawingArea
и ищете функцию, которая возвращает Gdk::Window
, а затем обнаруживаете, что это Gtk::Widget::get_window
, которая унаследована от Gtk::Widget
,Кстати, вы можете предпочесть const версию, так как вы не изменяете окно, просто читаете его.
Затем вы можете заменить код, который получает корневые окна, вызовом, чтобы получить Gdk::Window
виджетаВы заботитесь, и все готово.Если вы хотите пойти дальше, вместо использования Gdk::Pixbuf
, может быть способ использовать контекст cairo.