2017-01-16 4 views
0

C#GDI을 사용하여 Code 128 바코드를 그려야합니다. I는 벡터 그래픽으로 작동해야 .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으로 축척하면 이미지가 선명하지 않게됩니다. enter image description here

내가 이미지가 여기에 모양을 경우 내 broblem가 해결 될 것이라고 생각 : 나는 (그것이 여전히 900 때) 가볍게 흐리게되는 이미지를 발견 같은 방식으로 문자열을 그리는 방법을

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; 
관련 문제