PyQt에서 표준 QBrush 채우기 패턴 중 하나 (이 경우 Qt.Dense7Pattern)를 사용하여 사각형을 추가하는 QGraphicsScene이 있습니다. 장면이 원본 1 : 1 비율로 표시 될 때 예상대로 나타납니다. Dense7 패턴을 구성하는 "도트"는 서로 몇 픽셀 떨어져 있으며, 숫자를 선택하기 위해 5 픽셀 간격을두고 있습니다. 또한 원래 직사각형의 너비가 50 픽셀이고 높이가 50 픽셀이라고 가정 해 보겠습니다.QBrush - 표준 채우기 점 패턴을 스케일링 하시겠습니까?
내가 그 장면을 확대 할 때, 2의 인자로 채워진 사각형이 100x100 픽셀로 나타나게한다고 가정 해 보겠습니다. 채우기 패턴의 도트는 5 픽셀 간격으로 계속 나타나지만 Qt는 확대됩니다 정적 채우기 패턴에서도 채우기 패턴의 도트를 10 픽셀 간격으로 표시합니다.
This question와 유사합니다. 브러쉬의 pixmap 채우기 패턴에 변형 (스케일 포함)을 적용 할 수는 있지만 브러시의 '표준'채우기 패턴에는 적용되지 않습니다. 난 그냥에서의 인스턴스를 만들
다음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)
: (잘하면 내가 필요한 모든 일들을했다)
전체 서브 클래스 : 나는 서브 클래스를했고, 이제 페인트 방식으로 변환 브러시,하지만 행운을 변경 위 사용함
myItem=customFillPolygonItem(QPolygonF(...
myItem.setBrush(QBrush(Qt.Dense7Pattern))
myScene.addItem(myItem)
그래서 브러시의 표준 채우기 패턴에 눈금을 적용 할 수 있습니까? 이것은 QBrush.setFlag (ItemIgnoresTransformations)와 비슷하지만 그런 것은 존재하지 않습니다 ...이 항목은 전체 항목 (이 경우 사각형)에만 설정할 수 있습니다.
해결 방법이 포함될 수 있습니다 : - 사용 ItemIgnoresTransformations 수동으로 필요 로 실제 사각형의 정점을 변환 - 을 각각의 표준 채우기 패턴의 아웃 qpixmap을, 다음 질문에로 확장해야하는 경우 브러시로 그 픽스맵을 사용하여 위에서 언급 한
물론 가장 간단한 해결책을 찾는 것이 좋을 것입니다.
업데이트 : Schollii가 묻는 질문에 답변합니다. 알파 값을 조사하라는 그의 제안은 내가이 특정 사례에서 겪었던 더 큰 문제에 대한 해결책을 이끌어 냈습니다. 제가 게시 한 솔루션에서 철자가 다른 그레이 스케일을 만들었습니다. 실제로는 제가 물어 본 질문에 대한 해결책이 아닙니다. 어쨌든 감사합니다!
글쎄, 그것은 가능하지 않을 수도 있다는 또 다른 의견을 듣는 것이 좋다. 나는 단지 알파 값을 사용하는 것을 생각하지 않았다. 그것은 완벽한 해결책 일 것이다. 디스플레이의 전반적인 목표는 다른 회색 레벨에서 다른 다각형을 표시하는 것입니다. 표준 브러시 패턴이 '정상'스케일로 작동했기 때문에 아직 알파 값을 생각조차하지 못했습니다. 고마워요. 좋은 결과를 얻으면 여기에 다시 올리겠습니다. –
예, 알파가 최상의 솔루션이었습니다. 그 아이디어를 가져 주셔서 감사합니다. 돌이켜 보면 항상 분명해 보인다! 정확한 해결책을 좁히기 위해 별도의 답변을 올렸습니다 (그렇게 할 수있을 때 받아 들일 것입니다). –
듣기 좋습니다. 비록 내가 쓴 것은 다른 각도에서 문제를 보게하고 다른 질문 (결국 당신이 답을 알고 있음)으로 끝났습니다. 그러나 나는 당신의 선택을 존중하며, 가장 중요한 것은 당신이 그 토끼 구멍을 내려 가지 않았다는 것입니다. – Schollii