1

QPainter 領域にパディングを簡単に追加する方法はありますか?

全体的なアイデアは、(0, 0) から (10, 10) までの線を描くときに、実際には (0 + パディング、 0 + パディング) から (10 + パディング, 10 + パディング) まで。ただし、パディングの境界線が表示されるはずです。

QPainter a が次のように作成されると仮定します。

QPainter painter(aWidget); // aWIdget is a Widget*

およびpadding整数変数。ここで、ウィジェットの描画可能な領域を「A」と考えてみましょう。描画可能領域「B」を取得するにはどうすればよいですか。B は次のようになります。

B_width = A_width - 2 * padding;
B_height = A_height - 2 * padding;

そして、A の QPoint(padding, padding) にあるものは、B の QPoint(0, 0) にあるでしょうか?

私は自分でそれを実装し始めましたが(これは苦痛になるでしょう)、Qtでこれを行うためのより簡単で「事前に作成された」方法があるかどうか疑問に思っていましたか?もしかしてトランスフォーメーション?

ありがとう。

4

2 に答える 2

2

はい、変換を行うのが最善の方法です。変換を適用すると、後続のすべての描画呼び出しがその変換によって変換されます。たとえば、(5,5) の変換を適用すると、(0,0) から (10,0) への線が (5,5) から (15,5) になります。

QPainter のドキュメントはここにあります。下部を見ると、translateメソッドが表示されます。それはまさにあなたが探しているものです。

painter.translate(5, 5); // that should do it

編集: 描画呼び出しでサーフェスの特定の部分のみを編集できるようにするには、QPainter の setClipRect メソッドを使用します。

painter.setClipRect(5, 5, originalWidth - 5, originalHeight - 5);
于 2013-09-11T17:35:14.613 に答える
1

ウィンドウ領域も設定できます。QPainter のドキュメントを見ると、setWindow (印刷可能領域をカスタム座標に変換できる) と setViewport (印刷可能領域を特定の四角形に制限するために使用できる) という 2 つの興味深いメソッドが見つかります。

于 2013-09-11T17:47:58.237 に答える