2013-08-17 10 views
5

Mój problem polega na tym, że muszę narysować tekst na monochromatycznej bitmapie. Powstała bitmapa musi być wydrukowana na termicznej drukarce POS, więc bitmapa musi mieć 1 bpp.Tekst rysowania na monochromatycznej bitmapie w języku C#

Nie jestem dobry w grafice, więc próbowałem znaleźć próbki. Oto co próbowałem:

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); 

Zapisz się na końcu po prostu sprawdzić wynik. Za pomocą tego kodu otrzymuję następujący wyjątek: Obiekt graficzny nie może zostać utworzony z obrazu, który ma zindeksowany format pikseli.

Czy istnieje JAKIKOLWIEK sposób na narysowanie tekstu na monochromatycznej bitmapie pamięci?

Tylko dla informacji: Potrzebuję tego, bo mój głupi POS drukarki rysuje 0 dokładnie taki sam sposób, jak O, tak, że są niemożliwe do odróżnienia ...

+0

można zwrócić się do normalnej mapy bitowej, a następnie przekonwertować do formatu indeksowanej: http://stackoverflow.com/questions/9010761/c-sharp-convert-bitmap-to-indexed -kolorowy format – BartoszKP

Odpowiedz

6

Spróbuj tego:

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"); 

Tu jest link, który mógłby pomóc: http://msdn.microsoft.com/en-us/library/zy1a2d14.aspx

Powiązane problemy