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