2

如何使用 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();

我必须关闭每个窗口才能到达 nect 并且这样:

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

他们一个接一个地消失。

4

1 回答 1

2

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

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

帖子中的代码将窗口绘制为构造函数的一部分,然后代码进入事件循环并调用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 ) 有一个打开两个窗口的示例,并展示了如何检查鼠标按钮单击和鼠标位置等内容。

于 2012-01-06T06:25:46.603 回答