如何用CImg显示少量图像(每个在单独的窗口中)?

时间:2012-01-04 08:15:51

标签: c++ cimg

如何使用CImg显示多个图像 - 每个图像在一个窗口中?

当我尝试这样的事情时

        cimg_library::CImg<unsigned char> image(s.c_str());
        cimg_library::CImgDisplay main_disp(image, s.c_str()  );
        while (!main_disp.is_closed() ) 
            main_disp.wait();

我必须关闭每个窗口才能进入第一个窗口并使用它:

        cimg_library::CImg<unsigned char> image(s.c_str());
        cimg_library::CImgDisplay main_disp(image, s.c_str()  )

他们一个接一个地消失。

1 个答案:

答案 0 :(得分:1)

CImg打开的窗口意味着显示在事件循环内部。上面代码片段中的事件循环是while语句中的块。

while (!main_disp.is_closed() ) 
            main_disp.wait();

post中的代码将窗口绘制为构造函数的一部分,然后代码进入事件循环并调用wait()。对wait()的调用使应用程序暂停,直到发生“事件”。该事件是某种输入。它可以是鼠标单击,鼠标移动,键盘击键,甚至是操作系统的重绘请求。收到事件后,应用程序再次开始执行。

我没有时间尝试代码,但此代码应同时显示两个窗口:

cimg_library::CImg<unsigned char> image1(f1.c_str());
cimg_library::CImgDisplay disp1(image1, f1.c_str()  );
cimg_library::CImg<unsigned char> image2(f2.c_str());
cimg_library::CImgDisplay disp2(image1, f2.c_str()  );

//start event loop
while(true) {
     //All the interactive code is inside the event loop
     cimg_library::CImgDisplay::wait(disp1, disp2);
}

教程http://cimg.eu/reference/group__cimg__tutorial.html)有一个打开两个窗口的示例,展示了如何检查鼠标按钮点击和鼠标位置等内容。