c++ - gtkmm中的图像异步加载

标签 c++ gtkmm

当前,在我的项目中,我们使用的是gtkmm pixbuf create_from_file create_from_date ,它们在高分辨率图像的情况下会挂起整个GUI 1-2秒,并且在为屏幕加载多个图像时会变得非常慢。对于上述两个功能,是否可以在gtkmm中异步加载图像?我可以在gtk中找到用于异步加载图像的方法,但不能在gtkmm中找到。一个示例将很有帮助,因为我找不到与之相关的任何内容。

  if(!imageName.empty())
  {
    //Load image in pixbuf
    picPixBuff = Gdk::Pixbuf::create_from_file(imageName);

    picPixBuff = picPixBuff->scale_simple(150,35,Gdk::INTERP_BILINEAR);

   }

我经历了这个。
相关问题-How to load a widget as a different thread in gtk? (vala)

最佳答案

docs。该示例完全符合您的要求。
这些是神奇的功能。这个例子很容易理解。

// notify() is called from ExampleWorker::do_work(). It is executed in the worker
// thread. It triggers a call to on_notification_from_worker_thread(), which is
// executed in the GUI thread.
void ExampleWindow::notify()
{
  m_Dispatcher.emit();
}

void ExampleWindow::on_notification_from_worker_thread()
{
  if (m_WorkerThread && m_Worker.has_stopped())
  {
    // Work is done.
    if (m_WorkerThread->joinable())
      m_WorkerThread->join();
    delete m_WorkerThread;
    m_WorkerThread = nullptr;
    update_start_stop_buttons();
  }
  update_widgets();
}

关于c++ - gtkmm中的图像异步加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62428251/

相关文章:

c++ - 使用 gtkmm 构建的 Glade TreeView

c++ - 如何在 Gtkmm3 中使用 CssStyleProvider

c++ - Linux/C++/Gtk 的报告库?

c++ - 连接信号时 gtkmm 编译器错误

python - SWIG 编译的 C++/Python 代码的测试覆盖率

c++ - 如何为自定义类型扩展 std::tr1::hash?

c++ - operator new 是否在异常后破坏初始化的对象?

c++ - 在 C++ 中实现 GObject 接口(interface)

c++ - 是否可以将地址值直接分配给指针?

c++ - C++中的字符数组