2012-06-07 2 views
0

기본적으로 그래픽 장면에 그래픽 항목을 무작위로 배치했습니다. 창을 열고이 항목들을 표시합니다. 창 크기를 조정할 때이 항목을 동일한 크기로 유지하면서 창 크기에 비례하여 배치 할 수 있습니다. 어떻게하면 그래픽 뷰를 서브 클래 싱 한 다음 resize 이벤트가 발생했을 때 resize 객체를 내 graphicsscene 객체로 보냈습니다. 나는 다음과 같은 일을 할 수 있었다 :윈도우에서 그래픽 항목의 위치를 ​​변경하십시오.

double scaleX = double(event->size().width())/double(event->oldSize().width()); 
double scaleY = double(event->size().height())/double(event->oldSize().height()); 
다음

나는이 작업을 수행하기 위해이 값을 사용 :

derivedPointItem->setPos(derivedPointItem->pos().x() * scaleX, 
          derivedPointItem->pos().y() * scaleY); 

이 작품을 좋아,하지만 윈도우가 정말 작은 크기를 조정하면 꽤 옳지 않아 나 큰. 문제는 graphicsscene rect와 graphics view rect가 같지 않다는 것입니다. 또한, 나는 창 크기로 변경 배경을 가지고

void roiwindow::drawBackground(QPainter* painter, const QRectF& rect) 
{ 
    this->setSceneRect(0,0,rect.width(),rect.height()); 
    painter->save(); 
    painter->drawImage(rect, *refimage); 
    painter->restore(); 
} 

이 내가 쓰고 있어요 프로그램에해야 할 일이다. 또한 크기 조정이 작동하는지 확인할 수 있습니다. 기본적으로 배경을 다각형으로 설정 한 다음 다각형의 가장자리에 점을 배치 할 수 있습니다. 이미지의 크기를 매우 크거나 작게 조정하면 더 가까워 지더라도 점은 더 이상 폴리곤의 정점에 있지 않습니다. 누구든지이 작업을 수행하는 더 좋은 방법이나 해결 방법을 알고 있습니까? 감사.

편집 : 여기에 내가 일하고 있어요 프로젝트의 : 잘 모르겠어요하지만

+0

내가하고있는 프로젝트는 다음과 같습니다. "https://www.dropbox.com/s/myxi8kvdl7x9ye2/ncorr.tar.gz"또한 내가 말하고자하는 것은 위치를 창 크기에 비례하여 재배치하는 것입니다. . 그러나 항목 자체의 크기는 동일하게 유지됩니다. 잘하면이 일이 해결됩니다. 감사. 또한 프로그램을 사용하려면 파일> 업로드 참조를 클릭 한 다음 "세트로"를 클릭하십시오. 창 크기를 조정하면 내 뜻을 알 수 있습니다. – Justin

+0

한 가지 더. 기본적으로 matlab에서 impoly를 다시 만들려고합니다. 또한 우분투에서이 작업을 해왔습니다. 사용하는 시스템에 관계없이 작동합니다. 한 가지 더. roi를 닫으려면 마우스 오른쪽 버튼을 클릭하십시오. – Justin

답변

1

이 방법은 실제로 (작동이 있다면

dropbox.com/s/myxi8kvdl7x9ye2/ncorr.tar.gz가 사용하는 가장 좋은 방법 ...). 어쨌든 setPos() 함수로 인해 코딩 오류가 발생했습니다. 내 프로그램의 setPos() 함수는 중심이 아닌 이미지의 왼쪽 위 모서리 좌표를 지정하여 작동했습니다. 결국 일부 오류가 발생했습니다.