gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:48 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com