2010-01-04 7 views
1

win32/GDI (네이티브, .NET이 아님)를 사용하여 드로잉을해야하는데 다음과 같은 문제가 발생했습니다.사용자 지정 펜 스타일로 win32/GDI에서 선 그리기?

"스타일이 적용된"선을 그릴 필요가 있습니다. 예를 들어, 첨부 된 이미지에서 "A"로 표시된 선은 응용 프로그램 데이터에 관한 한 직선이며 추가적인 지그재그를 스타일로 그리면됩니다. 물론 이것은 프로그램 적으로하기는 쉽지만 선이 어떤 각도 ("B") 또는 베 지어 곡선 ("C") 일 수있는 경우 더 복잡해집니다.

자 이제이 모든 작업을 프로그래밍 방식으로 수행 할 수 있습니다. 각 라인 가능성에 지그재그를 넣으려고 수학적으로 노력했지만 시간이 많이 걸리고 오류가 발생하기 쉽습니다.

"D"로 표시된 것과 같은 비트 맵과 같이 라인에 적용 할 "스타일"을 windows/GDI에 부여 할 수 있으며 라인을 그릴 때 펜으로 사용하게 할 수 있습니까? 그렇지 않다면, "스타일"된 라인 각각에 대해 특정 드로잉 코드를 작성하는 것보다 더 유연하고 에러를 발생시키지 않는 방법이 있습니까?

* 첫 번째 타이머는 이미지를 게시 할 수 없습니다. 예는 http://i.imgur.com/IC0T2.png

답변

3

이것은 Win32 GDI에서는 불가능하다. 너는 수학을 스스로해야 할거야.

그러나 은 점선 또는 곡선을 구성하는 데 필요한 점을 쉽게 얻을 수 있어야한다는 점에 유의해야합니다.

예를 보려면이 "Hit-Testing"자습서를 참조하십시오. http://msdn.microsoft.com/en-us/library/ms969920.aspx

0

ExtCreatePen() 일 수 있습니다. 나는 지그재그 지원을한다면 사실을 모른다.

2

를 지금까지 내가 GDI 또는 GDI + 즉,이 기능을 지원 할에 아무것도 알고. 당신이 가지고있는 유일한 라인 옵션은 계기판, 복합 펜, 대시 모자, 엔드 캡, 채우기 브러시입니다.

직선 스플라인에 대한 흔들기와 모호한 그림을 그릴 수는 있지만 곡선 스플라인에서는 효과가 없습니다.

그러나 이렇게하기가 어렵지는 않습니다. 물론, 하루 정도 걸리 겠지만, 선과 베 지어 보간을 작성하고, 곡선을 동일한 세그먼트로 나누고, 모든 세그먼트에서 접선을 찾아 좌우로 번갈아 가며해야합니다.폴리 라인으로 매우 빨리 그릴 수있는 일련의 점을 얻게 될 것입니다.

1

자동으로 수행 할 것은 없습니다. 코드를 작성해야합니다. GDI에서 LineDDA API를 확인하는 것이 좋습니다. 코드가 필요로하는 수학을 단순화 할 수 있습니다.