2011-05-17 1 views
1

Je souhaite dessiner une forme avec des formes carrées, en losange et en croix. La ligne carrée est solide et fine. Cependant, la ligne de diamant et de croix ressemble à pointillé ou pointillé. Je veux que toutes les formes aient une ligne continue.Problème de ligne de forme avec la forme du dessin dans .NET, C#

Des idées?

est en dessous du code et des formes:

http://www.sendspace.com/file/n3wljs

private void CreateVariousShapes() 
{ 
    Bitmap bitmap = new Bitmap(17, 17); 
    Graphics graphics = Graphics.FromImage(bitmap); 
    Pen pen = new Pen(Color.Black); 
    pen.Width = 1; 
    pen.DashStyle = DashStyle.Solid; 
    Brush brush = new SolidBrush(Color.White); 

    //graphics.FillRectangle(brush, 0, 0, 16, 16); 

    //graphics.DrawRectangle(pen, 0, 0, 16, 16); 

    FillDiamond(brush, graphics); 
    DrawDiamond(pen, graphics); 

    DrawCross(pen, graphics); 

    //bitmap.Save(MapPath("SquareDiamondCross.png"),ImageFormat.Png); 
    //bitmap.Save(MapPath("SquareCross.png"), ImageFormat.Png); 
    //bitmap.Save(MapPath("SquareDiamond.png"), ImageFormat.Png); 
    bitmap.Save(MapPath("DiamondCross.png"), ImageFormat.Png); 
} 

private void FillDiamond(Brush brush, Graphics graphics) 
{ 
    Point[] points = new Point[] 
         { new Point(0,8), 
         new Point(8,16), 
         new Point(16,8), 
         new Point(8,0), 

         }; 

    graphics.FillPolygon(brush, points); 
} 

private void DrawDiamond(Pen pen, Graphics graphics) 
{ 
    Point[] points = new Point[] 
         { new Point(0,8), 
         new Point(8,16), 
         new Point(16,8), 
         new Point(8,0), 
         }; 
    graphics.DrawPolygon(pen, points); 
} 

private void DrawCross(Pen pen, Graphics graphics) 
{ 
    graphics.DrawLine(pen, 4, 2, 2, 4); 

    graphics.DrawLine(pen, 2, 12, 4, 14); 

    graphics.DrawLine(pen, 12, 14, 14, 12); 

    graphics.DrawLine(pen, 12, 2, 14, 4); 

    graphics.DrawLine(pen, 2, 4, 6, 8); 
    graphics.DrawLine(pen, 2, 12, 6, 8); 

    graphics.DrawLine(pen, 4, 14, 8, 10); 
    graphics.DrawLine(pen, 12, 14, 8, 10); 

    graphics.DrawLine(pen, 14, 12, 10, 8); 
    graphics.DrawLine(pen, 14, 4, 10, 8); 

    graphics.DrawLine(pen, 12, 2, 8, 6); 
    graphics.DrawLine(pen, 4, 2, 8, 6); 
} 
+0

On dirait un problème d'anti-aliasing ... (manque là-bas) –

Répondre

4

Définissez les propriétés graphiques suivantes:

graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; 
graphics.SmoothingMode = SmoothingMode.HighQuality; 

Nous espérons que vous obtiendrez ce que vous voulez.

+0

merci. Ça marche! – Pingpong