Это третья часть этой темы. Часть 1 , Часть 2. .
Мне удалось распечатать мое монохромное растровое изображение на моем принтере, однако при печати элемента есть большая черная полоса вдоль правой части изображения.
Вот оригинал

(Отсканировано) Что напечатано на принтере

Код для генерации двоичного двоичного объекта
Rectangle rect = new Rectangle(0, 0, Bitmap.Width, Bitmap.Height);
System.Drawing.Imaging.BitmapData bmpData = null;
byte[] bitVaues = null;
int stride = 0;
try
{
bmpData = Bitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, Bitmap.PixelFormat);
IntPtr ptr = bmpData.Scan0;
stride = bmpData.Stride;
int bytes = bmpData.Stride * Bitmap.Height;
bitVaues = new byte[bytes];
System.Runtime.InteropServices.Marshal.Copy(ptr, bitVaues, 0, bytes);
}
finally
{
if (bmpData != null)
Bitmap.UnlockBits(bmpData);
}
string str = String.Format("GW{0},{1},{2},{3},", X, Y, stride, Bitmap.Height);
byte[] ascii = Encoding.ASCII.GetBytes(str);
byte[] buffer = new byte[ascii.Length + bitVaues.Length + 1];
Buffer.BlockCopy(ascii, 0, buffer, 0, ascii.Length);
Buffer.BlockCopy(bitVaues, 0, buffer, ascii.Length, bitVaues.Length);
buffer[buffer.Length - 1] = (byte)'\n';
return buffer;
Моя первоначальная теория заключается в том, что формат BMP добавляет эту строку в качестве маркера конца строки и является недопустимым при визуализации. Я думаю, что мне, возможно, придется повторно проанализировать файл после того, как у меня есть двоичный массив и вынуть 00 00 00 в конце каждой строки. Но я пишу здесь на тот случай, если кто-нибудь придумает лучший способ.