6

QGraphicsView;の中にいくつかの長方形を描きます。で を作成して、これらのカスタム スティプル パターンを使用QBrushしますQPixmap。これは、期待どおりデフォルトのズーム レベルで表示されます。

を呼び出すとview->scale()、期待どおりに長方形が大きくまたは小さく表示されます。ただし、Qt は予想外のスティプル パターンの個々のビットをスケーリングしました。ブラシを使用して、より大きなまたはより小さな長方形を再度描画することを期待していました。例えば。1 ピクセル ドットとピクセル スペースの点描パターンを使用した場合、拡大すると、より大きな四角形が表示されますが、同じピクセル ギャップで同じ点描パターンが必要です。これは何とか達成可能ですか?ありがとう。

4

3 に答える 3

6

Qt で EDA ツール コンパニオンを開発しているときに、同じ問題に遭遇しました。

いくつか試した後、私がやったこと(そして私にとってはうまくいくようです)は、カスタムグラフィックアイテムを作成することです。paint メソッドでは、次のことを行います。

QBrush newBrush = brush_with_pattern;
newBrush.setTransform(QTransform(painter->worldTransform().inverted()));
painter->setBrush(newBrush);

これは、アイテムの逆変換をブラシに適用することです (したがって、スケーリングされません)。

setDashOffset は形状の境界線のみ(塗りつぶしではありません)だと思います。

于 2013-01-08T13:56:30.650 に答える
0

誰かがまだこれを見ている場合は、ピックスマップの塗りつぶしパターンではなく標準の塗りつぶしパターンのスケーリングに関する関連する質問が役立つ場合があります。基本的に、標準の塗りつぶしパターンのスケーリングを変更することはできないかもしれませんが (いくつかの回避策がリストされています)、代わりにアルファ値を使用すると、さまざまな色、特にグレー レベルを探している場合に望ましい効果が得られます。複雑。

于 2017-01-09T16:37:09.863 に答える
0

QPen::setDashOffset を使用できます。

http://harmattan-dev.nokia.com/docs/library/html/qt4/qpen.html#setDashOffset

シーンのズーム/スケール レベルに基づいてオフセットを設定する必要があります。Scene() を呼び出すことで、アイテム内のシーンへのポインターを取得できます。ただし、シーンに追加されていない場合は NULL になるため、NULL をチェックすることを忘れないでください (理論上は paint() を取得するべきではありませんが)。シーンにないとき)。

他のオプションは、次を使用することです。

http://doc.qt.digia.com/qt/qpainter.html#scale

ペインターでビューのスケーリングを元に戻すには。

于 2012-12-19T18:58:44.910 に答える