2012-01-04 2 views
2

CImg을 사용하여 하나의 창에 여러 이미지를 어떻게 표시 할 수 있습니까?CImg을 사용하여 몇 개의 이미지 (각각 별도의 창에 표시)를 표시하는 방법은 무엇입니까?

나는 내가 Nect 프로젝트 하나에이 함께 얻을 각각의 창을 닫아야이

 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

위로 CImg 사용에 실수를했을 때 X와 Windows 모두에서이 문제를 해결하지 못했습니다. 내 솔루션은 CImg을 삭제하고 wxWidgets로 이동하는 것이 었습니다. 좋은 결정이었습니다. – thiton

답변

1

CImg에 의해 열린 창은 이벤트 루프 내부에 표시됩니다. 위 코드 스 니펫의 이벤트 루프는 while 문 내부의 블록입니다.

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

게시물의 코드가 창을 생성자의 일부로 그린 다음 코드는 이벤트 루프를 입력하고 wait()를 호출합니다. wait()를 호출하면 응용 프로그램이 "이벤트"가 발생할 때까지 일시 중지됩니다. 이벤트는 일종의 입력입니다. 마우스 클릭, 마우스 이동, 키보드의 키 입력 또는 운영 체제의 다시 그리기 요청 일 수 있습니다. 이벤트가 수신되면 응용 프로그램이 다시 실행을 시작합니다.

나는 코드를 시도하는 시간이 없었어요,하지만이 코드는 같은 시간에 두 개의 창을 표시해야합니다

다음 튜토리얼 (http://cimg.eu/reference/group__cimg__tutorial.html가)이 열려있는 창을 쇼의 예를 가지고

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); 
} 

마우스 버튼 클릭 및 마우스 위치 확인 방법.

+0

고맙습니다. :) 나중에 코드를 사용해 보겠습니다. 결과를 게시 할 것입니다 (작동 여부는 상관 없음). – Patryk