Qt 4.7 QPainter を使用して、ポリゴンなどをウィジェットに描画しています。(0,0) がウィジェットの中心になり、x/y 軸が標準的な「デカルト」の方法で動作するように座標系を変更したいと考えています (つまり、y は「上」に行くほど増加し、「」に行くほど減少します)。下")。つまり、座標を「コンピュータ グラフィックス」ではなく「数学」のようなものにしたいということです。:-)
自分で計算するのではなく、 setViewport() と setWindow() を使用してこれを実行しようとしています。描画メソッドを自分の座標で直接呼び出すことができると便利だからです。
ここに私がこれまでに持っているものがあります:
// Setup coordinates
double screenWidth = width();
double screenHeight = height();
double windowWidth = 100.0;
double windowHeight = (screenHeight / screenWidth) * windowWidth;
painter.setViewport(0, 0, screenWidth, screenHeight);
painter.setWindow(-(windowWidth / 2.0), -(windowHeight / 2.0), windowWidth, windowHeight);
// Draw stuff
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::blue);
painter.drawRect(-10, -10, 20, 20);
これで問題なく動作し、画面の中央に素敵な青い四角形が描画されます。問題は、左上隅が (-10, -10) であると言わざるを得ないことです。私はそれを(-10、10)にできるようにしたいと思います。それはデカルト座標でのことです。
この「y軸反転」を取得するためにsetWindow/setViewportをいじってみましたが、役に立ちませんでした。これは本当に簡単で基本的なことのように思えますが、Qt ドキュメントと Web を精査した後、私はそれを理解できません!
ありがとう、
クリス