2017-12-25 25 views
0

기본적으로 1px 획 폭의 일부 선을 그립니다. 스트로크 너비의 값을 1로 설정 한 후에도 선이 2 픽셀을 덮고있었습니다. 그래서 Google 검색 및 별칭 및 앤티 앨리어스 렌더링에 대해 배웠습니다. 지금,이 솔루션은 내가 정확히 일치하는 문제 here을 발견하고이 질문의 답은이 두 줄을 함께 제공 :앤티 앨리어싱 모드를 중지하여 1px 행을 얻는 방법

myLine.SnapsToDevicePixels = true; 
myLine.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased); 

하지만 보여주기 때문에 이러한 방법은 대부분의 아마 사용되지 않는 오류 라인 클래스 Windows.UI.Xaml.Shapes 아무튼 그 이러한 속성 또는 메서드가 없습니다. 나는 또한 이것을 시도했다 :

myLine.UseLayoutRounding = false; 

그러나 그것은 작동하지 않았다. 도움이 필요 하신가요?

답변

1

X 및 Y 좌표로 선을 그릴 때 좌표는 선의 중심을 정의합니다. 이 리드

myLine.StrokeThickness = 1; 
myLine.Y1 = 10; 
myLine.Y2 = 10; 
myLine.X1 = 0; 
myLine.X2 = 50; 

라인의 중심이 두 개의 픽셀 (위에서 픽셀 9, 10) 사이가 될 :

그래서 나는이 같은 라인 뭔가를 정의 가정합니다. 따라서 랜더링은 항상 인접 픽셀에서 발생합니다 (따라서 적어도 이론적으로는 홀수 인 경우 모두 희미하거나 더 넓은 선이됩니다) StrokeThickness.

이 문제를 해결하려면 StrokeThickness/2을 Y 좌표에 추가하십시오. 따라서이 예에서 다음과 같은 값을 설정하여 그것을 해결 것 :

myLine.StrokeThickness = 1; 
myLine.Y1 = 10.5; 
myLine.Y2 = 10.5; 
myLine.X1 = 0; 
myLine.X2 = 50; 

을 대신 수직 라인을 그릴 X 축 좌표에 적용하려고합니다.

+0

와우! 그게 효과가있어! Raphael에게 감사드립니다. –