繁体   English   中英

UINT8中的自定义符号 - 如何转换为C#?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM