2017-01-16 8 views
0

Ich versuche GDI in C# zu verwenden, um Code 128 Barcode zu zeichnen. Ich habe .ttf Schriftart, die als Vektorgrafik funktionieren sollte (nicht Rastr):GDI zeichnen Barcode-Text

 var bmp = new Bitmap(900, 100); 
     var g = Graphics.FromImage(bmp); 
     g.Clear(Color.White); 
     g.SmoothingMode = SmoothingMode.None; 
     g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
     g.PixelOffsetMode = PixelOffsetMode.HighQuality; 
     g.DrawString(value, new Font("Code 128", 72), Brushes.Black, 0, 50); 
     g.DrawPath(new Pen(Brushes.Black, (float) 1.0), new GraphicsPath()); 
     g.Flush(); 

das Ergebnisbild ist breit, ich will es skalieren bis 0,5 (x-Achse nur). Aber wenn ich X auf 450 skaliere, wird das Bild nicht klar. Ich bemerkte, dass Bild (wenn es noch 900) ist leicht verschwommen: enter image description here

Ich glaube, mein broblem gelöst werden, wenn Bild wie hier aussehen:

enter image description here

Wie String in einer solchen Art und Weise ziehen ?

+0

Schalten Sie den Interpolationsmodus ebenfalls aus! Die Ergebnisse müssen zum nächsten Pixel passen. – TaW

+0

Danke @taw Ich habe versucht, aber das Ergebnis ist das gleiche – burzhuy

+0

Diese haben für mich gearbeitet: 'e.Graphics.SmoothingMode = SmoothingMode.None; e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit; e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor; ' – TaW

Antwort

2

Die Glättung von Text wird durch die TextRenderingHint-Eigenschaft gesteuert. Stellen Sie diese Eigenschaft vor dem Rendern der Zeichenfolge ein:

g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel; 
Verwandte Themen