3,882
社区成员
发帖
与我相关
我的任务
分享
private Byte[] m_commandBuffer = { 27, 42, 32, 24, 0 }; //指令 设置图形点阵,打印密度
//打印字符串方法
protected override void PrintString(String textData)
{
int messageLength = textData.Length;
for (int index = 0; index < messageLength; index++)
{
Char character = textData[index];
Byte[] fontBuffer = null;
fontBuffer = GetGaphicFontPixels(character);
if (fontBuffer == null)
{
//non printable characters
fontBuffer = new Byte[1];
fontBuffer[0] = System.Convert.ToByte('?');
}
else
{
m_commandBuffer[3] = System.Convert.ToByte(fontBuffer.Length / 3);
m_output.Write(m_commandBuffer, 0, m_commandBuffer.Length);
}
m_output.Write(fontBuffer, 0, fontBuffer.Length);
}// loop through all characters
}
//主要是这个方法
private Byte[] GetGaphicFontPixels(Char characterCode)
{
int fontIndex = 0;
Byte[] pixelBuffer = null;
if ((characterCode >= 0x0020) && (characterCode <= 0x00FF))
{
//General punctuation
fontIndex = characterCode - 0x0020;
pixelBuffer = Font0020_MingLiu_12x24.CharacterCode[fontIndex];
}
else if ((characterCode >= 0x2000) && (characterCode <= 0x206F))
{
//General punctuation
fontIndex = characterCode - 0x2000;
pixelBuffer = Font2000_MingLiu_24x24.CharacterCode[fontIndex];
}
else if ((characterCode >= 0x4E00) && (characterCode <= 0x4FFF))
{
fontIndex = characterCode - 0x4E00;
pixelBuffer = Font4E00_MingLiu_24x24.CharacterCode[fontIndex];
}
else if ((characterCode >= 0x5000) && (characterCode <= 0x5FFF))
{
fontIndex = characterCode - 0x5000;
pixelBuffer = Font5000_MingLiu_24x24.CharacterCode[fontIndex];
}
else if ((characterCode >= 0x6000) && (characterCode <= 0x6FFF))
{
fontIndex = characterCode - 0x6000;
pixelBuffer = Font6000_MingLiu_24x24.CharacterCode[fontIndex];
}
else if ((characterCode >= 0x7000) && (characterCode <= 0x7FFF))
{
fontIndex = characterCode - 0x7000;
pixelBuffer = Font7000_MingLiu_24x24.CharacterCode[fontIndex];
}
else if ((characterCode >= 0x8000) && (characterCode <= 0x8FFF))
{
fontIndex = characterCode - 0x8000;
pixelBuffer = Font8000_MingLiu_24x24.CharacterCode[fontIndex];
}
else if ((characterCode >= 0x9000) && (characterCode <= 0x9FAE))
{
fontIndex = characterCode - 0x9000;
pixelBuffer = Font9000_MingLiu_24x24.CharacterCode[fontIndex];
}
return pixelBuffer;
}
static class Font4E00_MingLiu_24x24
{
public static readonly Byte[][] CharacterCode ={
new Byte[] {0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00}
, new Byte[] {0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x06, 0x20, 0x00, 0x04, 0x3F, 0xFF, 0xFC, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00}
, new Byte[] {0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x30, 0x00, 0x21, 0xE0, 0x00, 0x2F, 0x20, 0x00, 0x38, 0x20, 0x00, 0x20, 0x20, 0x08, 0x20, 0x20, 0x04, 0x20, 0x20, 0x04, 0x20, 0x20, 0x04, 0x20, 0x20, 0x06, 0x20, 0x20, 0x04, 0x20, 0x20, 0x0C, 0x20, 0x20, 0x78, 0x20, 0x3F, 0xC0, 0x20, 0x38, 0x00, 0x20, 0x20, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00}
, new Byte[] {0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xFF, 0xF0, 0x10, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x30, 0x00, 0x81, 0xF0, 0x01, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00}
, new Byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0xFF, 0xF8, 0x40, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00}
, new Byte[] {0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00}
, new Byte[] {0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0xC0, 0x20, 0x03, 0x00, 0x20, 0x3C, 0x00, 0x3F, 0xE0, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00}