gtkmm 中图像的异步加载

Asynchronous Loading of images in gtkmm

目前,在我的项目中,我们正在使用gtkmm pixbuf create_from_filecreate_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();
}