Domanda

Perché l'attivazione dell'antialiasing interferisce con la mia penna tratteggiata?

 alt text
(fonte: googlepages.com )

È stato utile?

Soluzione

Credo che questo sia un problema con la creazione di una penna con una larghezza 0 e quindi con il ridimensionamento. A mio avviso, esistono due modi per aggirare il problema:

  1. Crea la penna con una larghezza maggiore. Ho scoperto che a 0.38f i trattini nella linea anti-alias hanno iniziato a ridimensionare correttamente.
  2. Trasforma manualmente i valori nella proprietà DashPattern di Pen.

Puoi eseguire quest'ultima soluzione alternativa con un po 'di codice 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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top