PyQtには、QGraphicsSceneがあります。このQGraphicsSceneに標準のQBrush塗りつぶしパターンの1つ、この場合はQt.Dense7Patternを追加します。これは、シーンが元の1:1スケールで表示されているときに、期待どおりに表示されます。Dense7パターンを構成する「ドット」は、互いに離れたいくつかのピクセルです。また、元の長方形の幅が50ピクセル、高さが50ピクセルであるとします。QBrush - 標準的な塗りつぶしパターンをスケールしますか?
私は、そのシーンを拡大すると、2の倍数で塗りつぶされた矩形が100x100ピクセルになるようにしますが、塗りつぶしパターンのドットは5ピクセル離れて表示されますが、Qtはズームインします静的な塗りつぶしパターンでも、塗りつぶしパターンのドットは10ピクセル離れて表示されます。
This questionも同様です。どうやら、ブラシのピクスマップ塗りつぶしパターンに変形(スケールを含む)を適用できますが、ブラシの「標準」塗りパターンには当てはまらないようです。私はちょうどからのインスタンスを作る
その後class customFillPolygonItem(QGraphicsPolygonItem):
def paint(self,painter,option,widget=None):
# from here, painter.setBrush affects shapes drawn directly in this function;
# self.setBrush affects the call to super().paint
newBrush=QBrush(painter.brush())
newBrush.setTransform(QTransform(painter.worldTransform().inverted()[0]))
self.setBrush(newBrush)
painter.setBrush(newBrush)
painter.drawRect(QRectF(0,0,50,50)) # draw a reality-check object
super(customFillPolygonItem,self).paint(painter,option,widget)
:(うまくいけば、私は必要だすべてをした)
全体サブクラス:私は、サブクラスをしたとのは、paintメソッドに変換ブラシが、運を変更しました上記を使用してください
myItem=customFillPolygonItem(QPolygonF(...
myItem.setBrush(QBrush(Qt.Dense7Pattern))
myScene.addItem(myItem)
だから、スケールをブラシの標準塗りつぶしパターンに適用することは可能ですか?これはQBrush.setFlag(ItemIgnoresTransformations)に似ていますが、そのようなものは存在しません...アイテム全体(この場合は矩形)にのみそのフラグを設定できます。
回避策は、次のものがあります - 必要に応じて ItemIgnoresTransformationsを使用して手動で実際の長方形の頂点を変換 - それは問題のように、スケールする必要があり、その場合にはブラシように、そのピックスマップを使用し、各標準の塗りつぶしパターンのうち、QPixmapのを作るの上記の
もちろん、最も簡単な解決策を見つけることはいいでしょう。
更新日: Scholliiは質問された質問に答えます。アルファ値を調べるという提案も、私がこの特定のケースで抱えていたより大きな問題を解決することにつながりました。私が投稿したソリューションでは別のグレースケールを作成しました。とりあえずありがとう!
それは可能ではない可能性があるという第二の意見を聞くことは良いことです。私はただのアルファ値を使っているとは思っていませんでした。それは完璧な解決策かもしれません。ディスプレイの全体的な目標は、異なるレベルのグレーレベルで異なるポリゴンを表示することです。標準的なブラシパターンは「通常の」スケールで機能していましたので、まだアルファ値は考えていませんでした。ありがとうございます - もし私が良い結果を見つけたらここに投稿します。 –
はい、アルファが最善の解決策でした。その考えを育ててくれてありがとう。振り返ってみるといつも明らかです!私は正確な解決策を絞り込むために別の答えを掲示しました。 –
これは素晴らしいことです。私が書いたことは、あなたが違う角度から問題を見ることになりましたが、別の質問(あなたが答えを知っていたもの)で終わりました。しかし、私はあなたの選択を尊重し、最も重要なのは、そのウサギの穴を下っていないことです:) – Schollii