2012-01-04 6 views
2

CImgを使用して、1つのウィンドウに複数の画像を表示するにはどうすればよいですか?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 1に到達するために、各ウィンドウを閉じる必要があり、これを:

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

彼らは次々と消えます。

+0

私がCImgを使用する間違いをしたとき、私はXとWindowsの両方でこの問題を解決しませんでした。私の解決策は、CImgを落としてwxWidgetsに行くことでした。それは良い決断だった。 – thiton

答えて

1

CImgによって開いたウィンドウは、イベントループ内に表示されることを意味します。上のコードスニペットのイベントループは、whileステートメント内のブロックです。

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

ポストのコードは、ウィンドウをコンストラクタの一部として描画し、イベントループに入り、wait()を呼び出します。 wait()を呼び出すと、アプリケーションは「イベント」が発生するまで一時停止します。イベントは何らかの入力です。これは、マウスクリック、マウス移動、キーボードからのキーストローク、またはオペレーティングシステムからの再描画要求であってもよい。イベントが受信されると、アプリケーションは再び実行を開始します。

私はコードを試す時間がなかったが、このコードは、同時に2つのウィンドウが表示されるはずです

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)は、2つの開いているウィンドウやショーの例を持っていますマウスボタンのクリックやマウスの位置などをチェックする方法。

+0

ありがとうございました!私は後でコードを試してみます。ここに結果を投稿します(それがうまくいくかどうかは問わない)。 – Patryk

関連する問題