有人知道我做错了什么吗?我试图通过 1D 字节数组上的 (x, y) 坐标更改像素颜色,但我无法成功,像素分散在各处。
这是我的文件头:
file.Write(
new byte[62]
{
0x42, 0x4d,
0x3e, 0xf4, 0x1, 0x0,
0x0, 0x0, 0x0, 0x0,
0x3e, 0x0, 0x0, 0x0,
0x28, 0x0, 0x0, 0x0,
0xe8, 0x3, 0x0, 0x0,
0xe8, 0x3, 0x0, 0x0,
0x1, 0x0,
0x1, 0x0,
0x0, 0x0, 0x0, 0x0,
0x0, 0xf4, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
0xff, 0x0, 0x0, 0x0,
0x0, 0x0, 0xff, 0x0});
这是我的字节数组:
int width = 1000;
int height = 128;
var t = new byte[width * height];
这是设置像素的方法(我很确定计算是错误的,我可能需要包含更多地图信息,但我不确定是什么):
static void SetPixel(byte[] img, int x, int y, int width, int height)
{
if (x >= 0 && x < width && y >= 0 && y < height)
{
Console.WriteLine($"{x} {y}");
int index = (y * width + x);
img[index] = 0x1;
}
}
最后,这是我如何调用该方法:
SetPixel(t, 1, 0, width, height);
我尝试了很多网上找到的解决方案,但没有一个有帮助。尝试调整宽度、高度。
如果我正确解释数据,您正在创建一个位图文件。您已将值
Bits per Pixel
设置为 1;但是,您为每个像素添加一个字节。因此,您应该将此值设置为 8(1 个字节 = 8 位)。