Frage

Warum nicht Schalt Anti-Aliasing mit meinem gestrichelte Stift stören?


(Quelle: googlepages.com )

War es hilfreich?

Lösung

Ich glaube, dass dies ein Problem mit einem Stift mit einer 0 Breite erstellen und dann Skalierung. Wie ich es sehe, gibt es zwei Möglichkeiten, dies zu umgehen:

  1. Erstellen Sie den Stift mit einer größeren Breite. Ich fand bei 0.38f, dass die Striche in der Anti-Aliasing-Linie richtig begonnen Skalierung.
  2. Sie manuell die Werte in der DashPattern Eigenschaft Pen verwandeln.

Sie können mit einem wenig C # 3.0-Code letztere Abhilfe tun:

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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top