2013-08-17 3 views
5

Моя проблема в том, что мне нужно нарисовать текст на монохромном растровом изображении. Получившееся растровое изображение должно быть напечатано на термальном POS-принтере, поэтому битмап должен быть 1bpp.Рисование текста на монохромном растровом изображении в C#

Я плохо разбираюсь в графике, поэтому я попытался найти несколько образцов. Вот что я пробовал:

Bitmap bmp = new Bitmap(300, 300, PixelFormat.Format1bppIndexed); 
using (Graphics g = Graphics.FromImage(bmp)) 
{ 
    Font font = new Font("Arial", 20, FontStyle.Bold, GraphicsUnit.Point); 
    g.Clear(Color.White); 
    g.DrawString(text, font, Brushes.Black, 0, 0); 
} 
bmp.Save(@"c:\x\x.bmp", ImageFormat.Bmp); 

Сохранить в конце был просто проверить результат. С помощью этого кода я получаю следующее исключение: Объект Graphics не может быть создан из изображения с индексированным пиксельным форматом.

Есть ли способ рисовать текст в монохромном растровом виде памяти?

Просто для информации: мне это нужно, потому что мой глупый POS принтер рисует 0 точно так же, как O, поэтому они невозможно отличить ...

+0

Вы могли бы привлечь к нормальной битовой карте, а затем преобразовать в индексированный формат: http://stackoverflow.com/questions/9010761/c-sharp-convert-bitmap-to-indexed -Цвет-формат – BartoszKP

ответ

6

Попробуйте это:

Bitmap bmp = new Bitmap(300, 300); 
     using (Graphics g = Graphics.FromImage(bmp)) 
     { 
      Font font = new Font("Arial", 20, FontStyle.Bold, GraphicsUnit.Point); 
      g.Clear(Color.White); 
      g.DrawString("Hello", font, Brushes.Black, 0, 0); 
     } 
     System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format1bppIndexed); 
     Bitmap newBitmap = new Bitmap(300, 300, bmpData.Stride, System.Drawing.Imaging.PixelFormat.Format1bppIndexed, bmpData.Scan0); 
     newBitmap.Save(@"c:\x\x.bmp"); 

Вот ссылка, которая может помочь: http://msdn.microsoft.com/en-us/library/zy1a2d14.aspx

Смежные вопросы