[英]Custom Symbol in UINT8 - how to convert to C#?
我有以下符号,这是一个! 用C ++编写:
const UINT8 ras[1][28] ={ {0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00} }; //'!'
现在,我需要在C#中将其创建为符号并将其打印在控制台或图像上,这怎么可能?
我知道应该打印一个! 但是,我如何从阵列到达!!
这看起来像一个16x14像素的位图。 如果我们将两个字节取两个字节,我们得到:
0x00, 0x00,
0x30, 0x00,
0x30, 0x00,
0x00, 0x00,
0x00, 0x00,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x00, 0x00
现在,值0x30
的二进制模式是00110000
,因此它看起来像一个带有2x2像素点的惊叹号,和一个2x8像素的垂直部分,就像这样(保留最左边的字节,因为最右边)在每一行是0或空白):
00000000
00110000
00110000
00000000
00000000
00110000
00110000
00110000
00110000
00110000
00110000
00110000
00110000
00000000
显然,它也是倒挂的。 使用上面的信息,您应该能够创建一个普通的旧Bitmap
并对其进行初始化,以便获得最终在C#中显示的内容。 当然,对于这个非常简单的图像来说,这听起来有些绕圈,但是仍然如此。
要初始化Bitmap,您可以执行以下操作:
byte[] input = new byte[] { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00 };
glyph = new Bitmap(16, 14, System.Drawing.Imaging.Format1bppIndexed);
for(int y = 0; y < glyph.Height; y++)
{
int input_y = (glyph.Height - 1) - y; // Flip it right side up.
for(int x = 0; x < glyph.Width; x++)
{
bool on = input[2 * input_y + x / 8] & (0x80 >> (x % 8));
glyph.SetPixel(x, y, on ? System.Drawing.Color.Black : System.Drawing.Color.White);
}
}
请注意,这段代码非常粗糙,我真的不是C#开发人员。 将其视为伪代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.