2012-12-19 3 views
5

QGraphicsViewの中に矩形がほとんど描画されません。私はQPixmapQBrushを作成することにより、これらのカスタムスティプルパターンを使用します。これは、期待どおりのデフォルトのズームレベルで表示されます。qt qgraphicsviewを点描パターンに影響を与えないようにするには?

私がview->scale()と呼ぶと、私が期待したように四角形が大きくなったり小さくなったりします。しかし、Qtは予想されない点描パターンの個々のビットをスケーリングしました。私はそれがブラシで大きいまたは小さい矩形を再び描くことを期待しました。 例 1ピクセルのドットとピクセルスペースを持つスティプルパターンを使用した場合、ズームインした後に大きな矩形を表示したいが、同じスティプルパターンを同じピクセルギャップで使用したい。これは何とか達成可能ですか?ありがとう。あなたはオフセットシーンに基づいて、ズーム/スケールレベルを設定する必要があります

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

答えて

5

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

私がやったことは、カスタムグラフィックスアイテムを作成することでした。塗装方法では、私が行います

ブラシにアイテムの逆変換を適用することです
QBrush newBrush = brush_with_pattern; 
newBrush.setTransform(QTransform(painter->worldTransform().inverted())); 
painter->setBrush(newBrush); 

(そう、それはスケールしません)。

私は、setDashOffsetは図形の境界線(塗りつぶしではない)だけにしかないと思います。

+0

ItemIgnoresTransformationsを設定するのと同じことはしませんか? – Schollii

0

あなたがQPen :: setDashOffsetを使用することができます。あなたはscene()を呼び出すことによってあなたのアイテムのシーンへのポインタをつかむことができます。なぜなら、シーンに追加されていないときはNULLになるのでNULLをチェックすることを忘れないでください(ただし、シーンにないとき)。

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

をあなたの画家でのスケーリング意見を元に戻すには:

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

+0

返信いただきありがとうございます。私はよく説明していないと思う。私は矩形のサイズを拡大するが、点描パターンは変わらないようにしたい。 – Kaniyan

+0

setDashOffsetを使用すると、その結果が得られます。たとえば、100%でダッシュオフセットが1になる可能性があります.50%では0.5を変更でき、パターンは同じになります(ただし、rectは2倍になります)。 – paulm

+0

QBrushを使用して点描パターンを設定しています。私はブラシの* Offsetメソッドを探していました。見ることができませんでした。 – Kaniyan

0

まだ誰もがこれを見ている場合は、pixmapの塗りつぶしパターンの代わりに標準の塗りつぶしパターンのスケーリングに関してa related question hereが役に立ちます。基本的に、標準の塗りつぶしパターンのスケーリングを変更することはできません(いくつかの回避策のアイデアが記載されています)。しかし、アルファ値を使用すると、さまざまな色、特にグレーレベルを探している場合に、畳んだ。

関連する問題