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

标签 c# c symbols

我有以下符号,它是一个!用 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

显然,它也是上下颠倒的。使用以上信息,您应该能够创建例如一个普通的老<a href="http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx" rel="noreferrer noopener nofollow">Bitmap</a>并对其进行初始化,以便获得最终在 C# 中显示的内容。当然,对于这个非常简单的图像来说,这听起来有点迂回,但仍然如此。

要初始化位图,您可以执行以下操作:

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# 开发人员。将其视为伪代码。

关于c# - UINT8 中的自定义符号 - 如何转换为 C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9411881/

相关文章:

c++ - Visual Studio 2008 - 错误 C2872 : 'NPC' : ambiguous symbol

c# - 错误! (使用来自 C# 的 Excel 命名范围)

c# - 如何在 .Net C# 中通过代理服务器打开套接字?

c# - 更改父级的大小而不影响子级的大小

c - 读取文件并打印文件中没有的数字

c - 如何抑制有关匿名结构的 Lint 消息?

c++ - 链接 lib 时未解析的外部符号,编译器将字母 'A' 添加到函数名称

c# - 同一页面上的多个模板

编译器更改函数名称

c++ - 发现符号用法