2017-01-16 19 views
0

Я пытаюсь использовать GDI в C#, чтобы нарисовать Code 128 штрих-код. У меня есть .ttf шрифта, который должен работать в качестве векторной графики (не Растр):GDI draw штрих-код

 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 до 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

Сглаживание текста контролируется свойством TextRenderHint. Просто установите это свойство до отображения вашей строки:

g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;