2013-08-17 23 views
5

Mein Problem ist, dass ich Text auf einer monochromen Bitmap zeichnen muss. Die resultierende Bitmap muss auf einem thermischen POS-Drucker gedruckt werden, so dass die Bitmap 1bpp sein muss.Zeichnen von Text auf monochrome Bitmap in C#

Ich bin nicht gut in Grafiken, also habe ich versucht, einige Beispiele zu finden. Hier ist, was ich versucht habe:

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

das Speichern am Ende nur das Ergebnis zu überprüfen war. Mit diesem Code erhalte ich die folgende Ausnahme: Ein Grafikobjekt kann nicht aus einem Bild mit einem indizierten Pixelformat erstellt werden.

Gibt es eine Möglichkeit, Text in eine monochrome Speicherbitmap zu zeichnen?

Nur zur Info: Ich brauche das, weil mein dummer POS-Drucker zieht eine 0 genau die gleiche Weise wie ein O, so dass sie unmöglich zu unterscheiden ...

+0

Sie in dem normalen Bitmap ziehen könnten und dann in indizierte Format konvertieren: http://stackoverflow.com/questions/9010761/c-sharp-convert-bitmap-to-indexed -Farbe-Format – BartoszKP

Antwort

6

Try this:

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

Hier ist ein Link, der helfen könnte: http://msdn.microsoft.com/en-us/library/zy1a2d14.aspx

Verwandte Themen