C# C-将任何文件类型转换为picturebox中显示的位图

C# C-将任何文件类型转换为picturebox中显示的位图,c#,bitmap,converters,bitstream,C#,Bitmap,Converters,Bitstream,我想要一个OpenFileDialog来选择任何文件类型,并在位图图像中显示文件位。我的意思是,选定的文件包含一些0/1位,我想在黑白图像中显示它们。有什么想法吗?如果该文件是有效的图像文件,您可以简单地读取如下图像: Image image = Image.FromFile(pathOfImage); …然后将其分配给图片框 您将需要对System.Drawing.dll的引用,并包括一个使用System.Drawing;在代码的顶部 但是,如果文件中的位表示黑白像素,则需要自己绘制图像 首

我想要一个OpenFileDialog来选择任何文件类型,并在位图图像中显示文件位。我的意思是,选定的文件包含一些0/1位,我想在黑白图像中显示它们。有什么想法吗?

如果该文件是有效的图像文件,您可以简单地读取如下图像:

Image image = Image.FromFile(pathOfImage);
…然后将其分配给图片框

您将需要对System.Drawing.dll的引用,并包括一个使用System.Drawing;在代码的顶部

但是,如果文件中的位表示黑白像素,则需要自己绘制图像

首先创建位图,然后从中创建图形对象。然后可以在其上绘制像素

using (var image = new Bitmap(width, height))
using (var g = Graphics.FromImage(image)) {
    // TODO: Draw using the graphics object. (Insert code below)
}
您可以使用此答案中的答案来读取位:

在双循环中,您可以遍历位。假设位逐行存储:

using (var stream = new FileStream("file.dat", FileMode.Open)) {
    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            bool? bit = stream.ReadBit(true);
            if (bit == null) { // No more bits
                return; 
            }
            if (bit.Value) {
                g.FillRectangle(Brushes.White, x, y, 1, 1);
            }
        }
    }
}

如果该文件是有效的图像文件,则可以简单地读取如下图像:

Image image = Image.FromFile(pathOfImage);
…然后将其分配给图片框

您将需要对System.Drawing.dll的引用,并包括一个使用System.Drawing;在代码的顶部

但是,如果文件中的位表示黑白像素,则需要自己绘制图像

首先创建位图,然后从中创建图形对象。然后可以在其上绘制像素

using (var image = new Bitmap(width, height))
using (var g = Graphics.FromImage(image)) {
    // TODO: Draw using the graphics object. (Insert code below)
}
您可以使用此答案中的答案来读取位:

在双循环中,您可以遍历位。假设位逐行存储:

using (var stream = new FileStream("file.dat", FileMode.Open)) {
    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            bool? bit = stream.ReadBit(true);
            if (bit == null) { // No more bits
                return; 
            }
            if (bit.Value) {
                g.FillRectangle(Brushes.White, x, y, 1, 1);
            }
        }
    }
}

编写一个函数,将任意字节转换为位图图像,然后加载该图像。编写一个函数,将任意字节转换为位图图像,然后加载该图像。这些文件不是有效的图像。他想要任何任意文件的位域的黑白表示。好吧,这让人困惑,因为有效的图像文件也由0和1位组成。我将使用每像素1位的位图来代替图形对象。我会写一个答案,但我今天只限于我的手机是的,锁位非常快,但也非常低级。答案中描述了它:。您还可以使用SaxonPike中的DirectBitmap类:。您可以使用directBitmap设置像素。位[y*宽度+x]=color.ToArgb;这些文件不是有效的图像。他想要任何任意文件的位域的黑白表示。好吧,这让人困惑,因为有效的图像文件也由0和1位组成。我将使用每像素1位的位图来代替图形对象。我会写一个答案,但我今天只限于我的手机是的,锁位非常快,但也非常低级。答案中描述了它:。您还可以使用SaxonPike中的DirectBitmap类:。您可以使用directBitmap设置像素。位[y*宽度+x]=color.ToArgb;