Qt 4.7 QPainterを使用して、ポリゴンなどをウィジェットに描画しています。私は座標系を変更して、(0,0)が私のウィジェットの中心にあり、x/y軸が標準的な "デカルト"のやり方で動作するようにしたいと考えています(つまりyは "上がり"ダウン")。言い換えれば、座標を「コンピュータグラフィックス」のように「数学」にしたいと思います。 :-)ウィンドウ/ビューポートを使ってQPainterの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のドキュメントとウェブを精査した後、私はそれを理解できません!
おかげで、
クリス
ただし、テキストを反転することもできますが、修正する必要があります。それはほとんど望ましくない! – bkausbk
ありがとうございます;) – Stormenet