Question

Pourquoi l'activation de l'anti-aliasing interfère-t-elle avec mon stylo en pointillé?

 alt text
(source: googlepages.com )

Était-ce utile?

La solution

Je pense qu’il est difficile de créer un stylo avec une largeur de 0 puis de le redimensionner. Selon moi, il existe deux façons de contourner ce problème:

  1. Créez le stylo avec une largeur plus grande. J’ai trouvé qu’à 0,38f, les tirets de la ligne anti-aliasée ont été mis à l’échelle correctement.
  2. Transformez manuellement les valeurs de la propriété DashPattern du stylet.

Vous pouvez effectuer la dernière solution de contournement avec un peu de code 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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top