如何正确使用Gtk :: Offscreen窗口

时间:2019-04-08 16:23:12

标签: c++ gcc gtk3 cairo gtkmm3

我正在努力获取gtkmm3 Gtk::OffscreenWindow以便在开罗表面上进行渲染。正确的方法是什么?

我有一个从WidgetRenderer派生的类,我叫Gtk::DrawingArea。我有一个来自DrawingArea的类,渲染了称为DrawManager的最后一个Glib::Refptr。使用Gdk::Pixbuf指向WidgetRenderer.get_pixbuf()并使用Gtk::OffscreenWindow

获取PixBuf

我尝试将Gtk::Application.run(WidgetRenderer)更改为标准窗口,并直接尝试使用WidgetRenderer::WidgetRenderer() : title("Label") { add(title); show_all_children(); show(); }

运行它

运行Solus 4.0并与存储库一起打包最新版本。

WidgetRenderer的构造函数:

MyArea::MyArea() : testNode()
{
    testNode.show();
     std::cout << testNode.get_width() << std::endl;
    m_image = testNode.get_pixbuf();
}

DrawManager的构造函数:

bool MyArea::on_draw(const Cairo::RefPtr<Cairo::Context> &cr)
{
    Gtk::Allocation allocation = get_allocation();
    const int width = allocation.get_width();
    const int height = allocation.get_height();

    Gdk::Cairo::set_source_pixbuf(cr, m_image, 200, 200);
    cr->paint();

    return true;
}

DrawManager的on_draw函数:

Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv);

   Gtk::Window win;
   win.set_title("Test");
   //win.set_default_size(200, 200);

   DrawManager area;

   win.add(area);
   area.show();
   return app->run(win);

主要功能:

label

应该发生的是应该在窗口中打印标签**sample api configuration** <api xmlns="http://ws.apache.org/ns/synapse" name="api" context="/api-context"> <resource methods="POST GET"> <inSequence> <log level="full"> <property name="Message" value="Before transformation"/> </log> <script language="py" key="conf:/repository/script/stockquoteTransformResponse.py" function="transformRequest"/> <log level="full"> <property name="Message" value="After transformation"/> </log> <respond/> </inSequence> </resource> </api>。相反,我得到了白屏。

0 个答案:

没有答案