2011-11-30 3 views
1

나는 그림을 .eps 형식으로 저장하는 프로젝트에서 일하고 있습니다.Qt4.7에서 픽셀을 밀리미터로 변환하는 방법은 무엇입니까?

그림 자체가 위젯에 있기 때문에 위젯의 크기를 픽셀에서 밀리미터로 변환해야 출력 이미지의 크기를 올바르게 설정할 수 있습니다.

int widthmm = QApplication::desktop()->widthMM(); 
int heightmm = QApplication::desktop()->heightMM(); 
int widthpx = QApplication::desktop()->width(); 
int heightpx = QApplication::desktop()->height(); 
QSize epsPictureSize; 
epsPictureSize.setWidth((picture.width*widthmm)/widthpx); 
epsPictureSize.setHeight((picture.height*heightmm)/heightpx); 
epsPrinter.setPaperSize(epsPictureSize,QPrinter::Millimeter); 

문제는 widthMMheightMM는 신뢰할 수 없습니다 거짓 결과를 제공한다는 것입니다 :

내가 사용하고있는 코드입니다.

실제 측정을 올바르게 수행하려면 플랫폼 간 솔루션이 필요합니다.

+1

크로스 플랫폼 화면 메트릭 기능이 있다고 생각하지 않습니다. 당신은 Qt를 (분명히 실패한) Qt에 의존하거나 플랫폼 레벨 코드 (Win32, X11, Mac)를 써야합니다. – rubenvb

+1

설명서에 "플랫폼 제한으로 인해이 기능을 사용하여 화면의 위젯 실제 크기를 확인할 수 없을 수도 있습니다." 그래서 네가 거기에서 운이 없다고 생각해. 화면의 실제 크기를 측정하는 것이 아니라 규모가 어떤지를 결정하는 것이 좋습니다. – Bart

+0

rubenvb : 어쩌면,하지만 그걸 최후의 수단으로 남겨 둘 것입니다. 바트 : 특정 크기 (100x100 MM)로 이미지를 그릴 생각이었습니다. 문제는 내가 크기 (80x40 픽셀)의 이미지를 가지고 있고 (일반) 크기를 줄이고 그 이미지를 그리면 공간의 절반 만 차지하게 될 것이라고 생각합니다 ... 그러나 임의의 크기로 만들 수 있다고는 생각하지 않습니다. 나는이 접근법에 적응한다 ... 나는 아직도 다른 제안을 위해 열려있다. 고마워요 –

답변

1

이러한 기능은 창 관리 시스템에 묻습니다. 일반적으로 이는 확실하지 않습니다. 귀여운 GUI를 원하면 레이아웃 관리자를 사용하는 방법을 배우십시오. 화면에 절대 크기의 것을 표시해야한다면 교정을해야합니다. 선을 표시하고 정확히 5cm가 될 때까지 사용자가 크기를 조정할 수있게하십시오.

+1

그것은 레이아웃 관리자의 문제가 아닙니다! 신중하게 질문을 읽으면 벡터 이미지 인 .eps 이미지가 생성되고 벡터 이미지의 "절대"크기는 없습니다. 문제는 아무것도 자르지 않기 위해 이미지가 MM에 필요한 공간 (너비 x 높이)을 지정하는 것입니다. 이렇게하려면 픽셀을 MM으로 변환 한 다음 크기 조정을 위해 뷰포트 변환을 수행하는 메서드가 필요합니다. 나는 이제 내 자신을 분명하게 만들었 으면 좋겠다. 조언을 주셔서 감사합니다. –