如何使用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() )
他们一个接一个地消失。
答案 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)有一个打开两个窗口的示例,展示了如何检查鼠标按钮点击和鼠标位置等内容。