, 나는 가정을 만들려고 해요 당신이하고있는 일은 포인트 세트를 저장 한 다음 페인트 기능을 사용하여 화가를 사용하여 그 포인트를 그리는 것입니다. 당신이 얻고있는 효과는 이미 그린 영역을 그릴 때입니다.
이 문제를 방지하는 데 사용할 수있는 한 가지 방법은 QPainterPath 개체를 사용하는 것입니다. 마우스 다운 이벤트가 발생하면 QPainterPath 객체에 moveTo 함수를 사용하십시오. 그런 다음 마우스 이동 이벤트에 대해 lineTo 함수를 호출하십시오.
마지막으로 렌더링 할 때 점을 그리는 대신 QPainterPath 객체를 렌더링하십시오.
---------- 편집 ----------------------------------- ---
원하는 효과의 예제를 추가 했으므로 문제가 더 잘 이해되어 여기에서 QPainterPath를 사용할 수 없지만 불투명 한 선을 사용하는 것이 좋습니다.
그러나 QPainterPath에 줄을 추가하기 전에 그라디언트가 변경되면 QPainterPath에 그라디언트 펜을 사용하여 원하는대로 작동시킬 수 있습니다. 별도의 투명 버퍼에
무승부가 렌더링 최대 불투명도를 획득하고 다시 원래의 버퍼를 렌더링 -을 : 또는 ...
당신은 원래 답이 언급했다.
이것은 버퍼라는 단어로 인해보다 복잡해 보입니다. 실제로는 별도의 QImage를 만들고 화면이 아닌 그 위에 그립니다. 그런 다음 화면을 그릴 때 대신 이미지를 복사합니다. '최대 불투명도'를 얻으려면 이미지의 비트를 스캔하고 알파 채널을 보거나 펜의 압력과 각 지점의 위치를 기록하는 별도의 정보 구조를 유지할 수 있습니다. 알파가 증가하고 감소 할 때의 최대 값과 최소값을 얻고 매분마다 변경을 매핑하는 대신 렌더링 값을 선형으로 보간합니다.
버퍼 이미지를 기본 이미지로 다시 렌더링 할 때 QPainter에서 컴포지션 모드를 설정해야하지만 머리 꼭대기에서 어느 것이 확실하지는 않습니다.문서가 무엇인지 확인하고 실험을 통해 어떤 효과가 있는지 확인하십시오.
내 경험으로 그래픽을 사용하여 어떤 효과가 있는지 살펴보고 자신이하고있는 것에 대해 느낌을 갖기 위해 실험해야 할 필요가있는 경우가 종종 있습니다. 특히 사용하는 방법이 속도가 느리고 합리적인 프레임 속도로 작동하도록 최적화해야합니다.
동일한 문제를 설명하는 자주색 인간과 연결된 질문입니까? – sashoalm
네, 똑같은 문제, 그리고 그것에 대해서도 동일한 대답을했습니다. –