2017-01-16 46 views
0

我試圖在C#中使用GDI繪製Code 128條形碼。我有.ttf字體這應該工作作爲矢量圖形(未RASTR):GDI繪製條形碼文本

 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(); 

結果圖像是寬的,我想將其縮放到0.5(僅x軸)。但是當我將X縮放到450時, - 圖像變得不清晰。我注意到,圖像(當它還是900)輕微模糊: enter image description here

我想如果圖像看起來就像在這裏我broblem將迎刃而解:

enter image description here

如何以這種方式繪製字符串?

+0

Switch InterpolationMode也是關閉的!結果必須符合最近的像素。 – TaW

+0

謝謝@taw我試過了,但結果是一樣的 – burzhuy

+0

這些已經爲我工作:'e.Graphics.SmoothingMode = SmoothingMode.None; e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit; e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;' – TaW

回答

2

平滑文本由TextRenderingHint屬性控制。只需在渲染字符串之前設置此屬性:

g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;