문제

반 알리 아스를 켜는 이유는 왜 내 점선 펜을 방해합니까?

alt text
(원천: GooglePages.com)

도움이 되었습니까?

해결책

나는 이것이 0 너비의 펜을 만들고 스케일링하는 데 문제가된다고 생각합니다. 내가 알 수 있듯이, 이것을 해결하는 두 가지 방법이 있습니다.

  1. 더 큰 너비로 펜을 만듭니다. 0.38f에서 anti-aliased 라인의 대시가 제대로 스케일링되기 시작했습니다.
  2. 펜의 대시 패턴 속성의 값을 수동으로 변환합니다.

후자의 해결 방법을 약간의 C# 3.0 코드로 수행 할 수 있습니다.

protected override void OnPaint(PaintEventArgs e)
{
    Graphics g = e.Graphics;
    using (Pen p = new Pen(Color.Black, 0.0f))
    {
        p.DashStyle = DashStyle.Dash;

        g.ScaleTransform(4.0f, 4.0f);

        g.DrawLine(p, 5.0f, 5.0f, 55.0f, 5.0f);

        g.SmoothingMode = SmoothingMode.AntiAlias;
        p.DashPattern = Array.ConvertAll(p.DashPattern, d => d * 4.0f);
        g.DrawLine(p, 5.0f, 10.0f, 55.0f, 10.0f);
    }

    base.OnPaint(e);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top