1

既存のペインターに回転した画像をペイントしようとしています。ローテーションと場所は毎回異なります。回転は正常に機能しますが、場所を予測できないようです。奇妙なことに、画像の代わりにテキストを描画すると、動作が異なります。

テキストは「ポイント」で左下から始まるように見えますが、画像は「ポイント」で左上から始まります。しかし、回転後、画像がどうなるかわかりません....

例:

QPoint point = QPoint( 80, 200 );
painter->rotate(45);

painter->drawImage(point, QImage("/srv/...."));  // i can't predict where this goes
painter->drawText(point, "Rotated text");        // but I can predict exactly where this goes!

drawImageを使用している場合は、translate(x,y)を使用する必要があるのではないかと考えていますが、回転とそれが機能する理由に応じて、どのようなxとyを使用する必要があるか途方に暮れていますdrawTextで問題ありません。

4

2 に答える 2

2

読んでいる人へ-別の脳リークがありました...最初に座標系を画像を最終的に配置したい場所に変換し、次に回転させてから0,0で画像を描画する必要がありました...

コードは次のようになります。

painter->translate(80,200);  // this will be our point of origin
painter->rotate(45);         // now do the rotation at this point

painter->drawImage(0,0,QImage("/srv/....")); // since we're already at our point enter 0,0
于 2013-02-14T20:42:23.103 に答える