나는 QPainter 변환을 설정하는 혼란을 겪었습니다. 나는 Qt 문서를 읽었지만 두뇌가 나아지고있다.QWidget/QPainter 논리 화면 좌표 변환
void MyWidget::paintEvent (QPaintEvent *) {
QPainter painter (this);
// ...
논리 좌표로 설명되는 장면을 렌더링하고 싶습니다. 장면은 렌더링 될 사각형 인 "스테이지"를 포함합니다. 스테이지는 논리적 좌표로 지정됩니다. 뷰포트가 있어야 위젯은
- 무대의 경계를 초과하지 않고 가능한 한 큰이며,
- 무대와 공통의 센터가 (정확한 용어는?이다).
무대는 내가 변환을 설정 한 경우
QRectF stage_rect (QPointF(0.2,5.1), QPointF(6.5,1.9));
같은 것을 설명하고 전화를 할 것입니다
painter.drawText (1.2, 2.2, "abc");
가에 나타납니다 위에 표시된 위젯의 왼쪽 하단 - 논리 좌표가 위쪽으로 증가하고 전체 스테이지의 높이가 위젯에 표시되고 스테이지가 가로 세로로 자르기 (위젯이 너무 넓거나 짧을 수도 있지만 스테이지가 세로로 잘릴 수 있음).
창문을 무대에 단단히 고정 시키려면 QPainter에 어떤 변형을 적용해야합니까?
마지막 점에 추가하려면 : 설명 된 변환과 함께'QTransform' 객체를 사용하고'map()'메소드를 사용하여'QPointF' 값 등을 처리 할 수 있습니다. –
예, 그것을 지적 해 주셔서 감사합니다 . 우수한 지적. – goug