私はQPainter変換を設定するうえで混乱しています。私はQtドキュメントを読んだことがありますが、脳炎が進行中です。QWidget/QPainter論理スクリーン座標変換
void MyWidget::paintEvent (QPaintEvent *) {
QPainter painter (this);
// ...
論理座標で記述されたシーンをレンダリングします。シーンにはレンダリングされる矩形である「ステージ」が含まれます。ステージは論理座標で指定されます。ビューポートを有していなければならないウィジェットは
- ステージの限界を超えることなく、可能な限り大きい、そして
- 段階と共通の中心を有する(正しい用語は?ということです)。上記の状況で
ステージは、私が変換を設定し、
painter.drawText (1.2, 2.2, "abc");
を呼び出す場合、それはで表示されます
QRectF stage_rect (QPointF(0.2,5.1), QPointF(6.5,1.9));
のようなものによって説明されるだろう上記のようにウィジェットの左下に表示されます。つまり、論理座標が上に上がり、フルステージの高さがウィジェットに表示され、アスペクト比を維持するためにステージが横に切り取られます(ウィジェットが広すぎる/短すぎる可能性がありますが、ステージが垂直に切り取られる可能性があります)。
QPainterにどのような変換を適用して、ウィンドウをステージにしっかりと収める必要がありますか?
最後の点に追加するには:記述した変換で 'QTransform'オブジェクトを使用し、' map() 'メソッドを使って' QPointF'などの値を扱うことができます –
ありがとうございました。優れた点。 – goug