2013-08-17 16 views
5

Il mio problema è che ho bisogno di disegnare il testo su una bitmap monocromatica. La bitmap risultante deve essere stampata su una stampante POS termica, quindi la bitmap deve essere 1bpp.Disegno di testo su bitmap monocromatico in C#

Non sono bravo in grafica, quindi ho cercato di trovare alcuni esempi. Ecco che cosa ho provato:

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

Salva alla fine era solo per controllare il risultato. Con questo codice, ottengo la seguente eccezione: Non è possibile creare un oggetto grafico da un'immagine con un formato pixel indicizzato.

C'è qualche modo per disegnare il testo in una bitmap di memoria monocromatica?

Solo per informazioni: Ho bisogno di questo perché la mia stupida POS stampante disegna un 0 esattamente allo stesso modo di un O, quindi sono impossibili da distinguere ...

+0

Si potrebbe attirare a bitmap normale e poi convertire in formato indicizzato: http://stackoverflow.com/questions/9010761/c-sharp-convert-bitmap-to-indexed -Colore-format – BartoszKP

risposta

6

Prova questa:

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

Ecco un link che potrebbe aiutare: http://msdn.microsoft.com/en-us/library/zy1a2d14.aspx

Problemi correlati