Рисование текста на монохромном растровом изображении в C#

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

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

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:xx.bmp", ImageFormat.Bmp);

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

есть ли способ нарисовать текст в растровое изображение монохромной памяти?

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

1 ответов


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

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