我正在尝试从2D阵列构建一个位图,只是用于测试。 即使我正确设置矩阵(一个像素黑色,一个白色),当我构建位图时,似乎应用了一些插值滤波器。我怎样才能获得像素值?
bool switchColor = false;
int width = 30;
int height = 15;
int stride = width * 4;
int[,] integers = new int[width, height];
int thres = 0;
for (int i = 0; i < width; ++i)
{
for (int j = 0; j < height; ++j)
{
if (switchColor)
{
switchColor = false;
thres = 0;
}
else
{
switchColor = true;
thres = 255;
}
byte[] bgra = new byte[] { (byte)(thres), (byte)(thres), (byte)(thres), 255 };
integers[i, j] = BitConverter.ToInt32(bgra, 0);
}
}
// Copy into bitmap
Bitmap bitmap;
unsafe
{
fixed (int* intPtr = &integers[0, 0])
{
bitmap = new Bitmap(width, height, stride, PixelFormat.Format32bppRgb, new IntPtr(intPtr));
pictureBox1.Image = bitmap;
}
}
我有:
答案 0 :(得分:1)
我认为这只是在拉伸模式下放大图片框时的预期行为。您只是创建一个小的30x15位图,我假设它比设计器中的PictureBox小。尝试设置:
pictureBox1.SizeMode = PictureBoxSizeMode.Normal;
然后为了获得更大的测试视图,您可以扩展测试图像:
int width = 300;
int height = 150;