2013-08-05 2 views
3

Qt를 사용하여 일반적으로 칠판에 표시되는 것처럼 분필 스타일로 선을 그립니다.Qt로 분필 스타일 그리기 방법

Chalk style drawing sample image

이 렌더링 스타일을 달성하는 가장 좋은 방법은 무엇입니까 : 내가 생각하고있는 것을 다음의 예는? 특수 브러쉬로 많은 작은 선을 그릴 필요가 있습니까, 아니면 샘플 이미지에서 볼 수있는 "매력적인"스타일을 얻는 더 좋은 방법이 있습니까?

그리고 이것을 통합하는 가장 좋은 장소는 어디입니까? 이론적으로 QPainter 아래에 이것을 가져 오는 것이 이상적입니다. 맞춤 QPaintEngine에서 모든 다양한 QPainter :: drawLine 호출은 분필 스타일을 사용하여 끝납니다. 그러나 QPaintEngine 인터페이스가 완벽하게 보이지만 클래스 자체는이 용도로 사용하지 않아야합니다 ...

도움이 필요하시면 미리 감사드립니다.

인사말,

파비안

+0

예를 들면 다음과 같습니다. 그래픽 효과를 사용하려면 원하는 효과로 추가하려는 이미지가있는 경우 애프터 효과로 작동합니다. – TheDarkKnight

+0

예. 나는 질감이있는 브러시로 놀았으며 갈 길이 될 것입니다. 라인은 여전히 ​​매우 직선적으로 보이지만, 손으로 그린 ​​초크 라인은 일반적으로 더 곡선 적입니다. 나는 현재 스플라인 (spline)을 사용하는 커스텀 라인 렌더링 함수를 사용하여 더 손으로 그린 ​​것처럼 보이도록 실험 중이다. 지금까지 유망 해 보인다. – Fabian

+0

텍스처가 올바르게 보이면 오른쪽으로 볼 수 있어야합니다. 과거에는 맞춤 브러쉬에 대한 기사를 보았지만 지금은 찾을 수 없습니다. 내가 다시 만나면 알려줄거야. – TheDarkKnight

답변

0

내가 다른 방법으로 문제를 해결 한 .. 정말 유망한 보인다. 질감이있는 브러쉬를 사용하면 좋은 결과를 얻지 못했습니다 (아마도 내 잘못). QGraphicsEffect는 QGraphicsView를 기반으로하지 않기 때문에 불행히도 옵션이 아닙니다. 나는 결국했을 무엇

: QPainter를 (즉 ChalkPainter)

  • 추가 ChalkPainter에 새로운 drawChalkLine() 메소드에서 자신의 클래스 파생

    • . 이 메소드는 전달 된 라인을 가져 와서 작은 덩어리로 분할하고 QPainter :: drawPath를 통해이 덩어리를 베 지어 곡선으로 렌더링합니다. 각 베 지어 곡선 덩어리에 대해 제어점을 직선과 직각으로 무작위로 이동시킵니다.
    • 다음은 drawChalkLect()와 같은 ChalkPainter 클래스에 추가 draw 메서드를 추가했습니다.이 메서드는 모두 내부적으로 drawChalkLine() 메서드를 사용합니다.

    QPainter 메서드를 직접 사용할 수 없기 때문에 이것은 가장 우아한 방법은 아니지만 제 목적에 맞는 좋은 결과를 제공합니다. 당신이 그것을 그릴 수 있도록하려면 질감 브러시를 만들어 볼 것

    enter image description here

  • 1
    내가 QGraphicsEffect의 방법을 찾기 시작 .. 나는 유사한 효과를 것 같은 필터를 개발할 수 있어야한다 생각

    ..

    내가 업데이 트됩니다 여기에 귀하의 의견에 대답하십시오.

    아니요, QGraphicsEffect는 '그래픽 항목별로'적용될 수 있습니다. QGraphicsItem을 살펴보면 setGraphicsEffect 메서드가 있다는 것을 알 수 있습니다. 예를 들어 QGraphicsLineItem에서 작동하는 효과를 디자인하고 백일해 보려는 선에만 설정하면됩니다.

    중요한 점은 미리 그려진 이미지를 조작 할 필요가없는 경우 graphicsEffect를 사용하여 완전히 owner-draw 항목으로 만들 수 있습니다 (예 : 효과는 QGraphicsLineItem에만 적용 할 수 있음). drawSource()를 사용하여 미리 그려서 수정 한 다음 또는 처음부터 완벽하게 그려라.

    나는 내가 지금 일하고있는 프로젝트와 비슷한 것을 필요로 할 것이므로, 다음 코딩을 도와 줄 것이다. 아마 다음 주에 어딘가에서 그것을 할 것이다. 다음 며칠 동안 시간이 없어 ..

    답변이 완료되면 바로 소스 링크로 업데이트 해 드리겠습니다.

    사용자 정의 브러시는

    +0

    사실, 이것이 그 문제를 해결하는 한 가지 방법입니다. 그러나 그래픽 효과는 최종 이미지 데이터에서 작동합니다. 따라서 알고리즘은 이미지를 수정하기 위해 이미지의 선을 감지해야합니다. 아주 까다로워. – Fabian