2012-12-19 3 views
5

QGraphicsView 안에 몇 개의 직사각형을 그립니다. 나는 QPixmap과 함께 QBrush을 만들어서 사용자 정의 점 무늬 패턴을 사용합니다. 예상대로 기본 확대/축소 수준으로 표시됩니다.qt qgraphicsview를 점 패턴에 영향을 미치지 않는 스케일로 만드는 방법은 무엇입니까?

view->scale()으로 전화하면 직사각형이 예상보다 크거나 작게 표시됩니다. 그러나 Qt는 stipple 패턴의 개별 비트를 스케일링합니다. 브러시로 크고 작은 사각형을 다시 그릴 것을 기대했습니다. 예 : 하나의 픽셀 도트와 픽셀 공간이있는 스 le플 패턴을 사용했다면, 확대 한 후에 더 큰 직사각형을보고 싶지만 동일한 픽셀 틈을 가진 같은 스티 플 럽 패턴을 원합니다. 어떻게 든 달성 할 수 있습니까? 감사. 당신은 오프셋 장면에 따라 줌/스케일 수준을 설정해야합니다

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

:

답변

5

Qt에서 EDA 툴 컴패니언을 개발하는 동안 같은 문제가 발생했습니다.

시도한 후, 내가 한 일 (그리고 나를 위해 일하는 것)은 맞춤 그래픽 항목을 만드는 것입니다. 페인트 방법에 대해서는 다음과 같습니다.

이는 브러시에 항목의 역변환을 적용하므로 크기가 조정되지 않습니다.

나는 setDashOffset이 도형 경계 (채우기가 아닌)에만 있다고 생각한다.

+0

ItemIgnoresTransformations를 설정하는 것과 동일하지 않습니까? – Schollii

0

당신은 QPen :: setDashOffset를 사용할 수 있습니다. scene()을 호출하여 항목의 장면에 대한 포인터를 가져올 수 있지만 NULL을 확인하는 것을 잊지 마십시오. 장면에 추가되지 않으면 NULL이되므로 (비록 이론상 paint()를해서는 안되지만) 장면이 아닌 경우).

다른 옵션은 사용하는 것입니다

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

이 화가에 스케일링보기를 취소하려면.

+0

답장을 보내 주셔서 감사합니다. 나는 내가 잘 설명하지 않았다고 생각한다. 직사각형의 크기를 배율로 지정하고 점 무늬 패턴을 동일하게 유지하겠습니다. – Kaniyan

+0

setDashOffset을 사용하면 그 결과를 얻을 수 있습니다. 예를 들어 100 %에서 대시 오프셋은 1 일 수 있습니다. 따라서 50 %에서 0.5로 변경할 수 있고 패턴은 똑같아 야합니다 (그러나 rect는 두 배로 작음). – paulm

+0

QBrush를 사용하여 점 패턴을 설정하고 있습니다. 브러쉬에서 * Offset 메서드를 찾고있었습니다. 볼 수 없었어요. – Kaniyan

0

누구나 여전히이 문제를보고있는 경우, pixmap 채우기 패턴 대신 표준 채우기 패턴의 배율에 관한 a related question here이 도움이 될 수 있습니다. 기본적으로 표준 채우기 패턴의 배율을 수정할 수는 없습니다 (몇 가지 해결 방법 아이디어가 나열되어 있음). 그러나 알파 값을 사용하면 다양한 색상, 특히 회색 레벨을 찾는 경우 원하는 효과를 얻을 수 있습니다. 뒤얽힌.