2009-10-29 8 views
1

필자는 분수 펜 너비로 이상한 동작을 보았으며 아무도 무슨 일이 일어 났는지 설명 할 수 있는지 궁금합니다. 그림판 이벤트에 응답 폼 직사각형 그리기 : 폭분수 너비를 사용하는 .NET의 System.Drawing.Pen 동작

private void Form1_Paint(object sender, PaintEventArgs e) 
{ 
    const float width = 1.996093F; 
    Rectangle rectangle = new Rectangle(10, 10, 20, 20); 

    using (Pen pen = new Pen(Color.Black, width)) 
    { 
    e.Graphics.DrawRectangle(pen, rectangle); 
    } 
} 

0 내지 1.996093를, I는 1 픽셀 폭의 직사각형을 얻는다. 1.996094와 2.003906 사이의 너비에서는 2 픽셀 너비의 사각형을 얻습니다. 2.003907에서 3.996093까지 3 픽셀을 얻습니다. 기괴하게도, 너비가 1.9960937 인 경우, 위쪽 가장자리가 2 픽셀 넓이이고 다른 가장자리가 1 픽셀 인 사각형을 얻습니다.

여기에 무슨 일이 일어 났는지 설명 할 수 있습니까? 나는 컷오프 포인트가 1.5, 2.5, 3.5 등이되기를 바랬다.

+0

다른 위치에 그릴 때 동일한 '두께'를 나타내나요? –

답변

0

드로잉 할 Graphics 객체에 대한 앤티 앨리어싱을 활성화하면 문제가 해결됩니다.

문제는 영원한 문제입니다. 부분적으로 그려진 픽셀을 가져 왔을 때 검정이나 흰색입니까? 결과는 알고리즘 및 추측에 따라 다릅니다.

선명하고 또렷한 1 픽셀 또는 2 픽셀 폭의 선을 실제로 사용하고자 할 때 왜 부분 픽셀 너비를 사용하는지 궁금 하지만요. 폭을 정수로 쉽게 반올림 할 수 있으므로 더 이상 그런 문제가 나타나지 않아야합니다.