2017-01-16 2 views
0

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

また、補間モードをオフに切り替えてください!結果は、最も近いピクセルに適合しなければならない。 – 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; 
関連する問題