在Windows Form Application程序中如何把一个自定义的图像结构里的数据映射到pictureBox中?

luckyviolet07 2017-03-27 04:11:38
我现在的图像信息存放在这样一个结构中
typedef struct {
unsigned char red, green, blue;
} ASD_Pixel8;
red, green, blue各为长度为2160x3840的字符数组,分别存放了图像RGB三个通道的像素值。
现在如何创建一个同样大小的Bitmap对象,假设对象名为image, 我可以用SetPixel 方法将原图像的像素信息一一存放到Bitmp对象的Color结构中。然后用 PictureBox1->Image = image将这个对象通过pictureBox显示出来?

或者更简单一点,怎么样才可以把存放在ASD_Pixel8结构体中的图片信息映射到windows form application的pictureBox中?
...全文
133 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckyviolet07 2017-03-27
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
[quote=引用 6 楼 luckyviolet07 的回复:] 对的,以前用C++和C更多,没用过C#,也是刚刚开始学习用windows form application.写这个程序的目的就是让最后的图片可以直接通过读取buffer在picture box上显示出来,而不是先保存成图片文件再通过读取文件显示。
那么你是否有能力先把图片保存了被? 不会走路,怎么跳爵士舞?[/quote] 这个已经做到了,不过还是通过写C++保存下来的。但是这样读取会比较慢,而且也不适合之后开发连续多张图片显示。我在网上搜索load pictureBox from memory,搜到的内容大多是关于C#的,所以才想着用C#完成。现在想来可能太急躁了,还是应该先死磕C++
  • 打赏
  • 举报
回复
你问“不知道怎么new Bitmap”,别人告诉你 c# 语法了。可我猜你还是不想结贴?是不是? 因为你没搞懂自己到底该如何提问。
  • 打赏
  • 举报
回复
引用 6 楼 luckyviolet07 的回复:
对的,以前用C++和C更多,没用过C#,也是刚刚开始学习用windows form application.写这个程序的目的就是让最后的图片可以直接通过读取buffer在picture box上显示出来,而不是先保存成图片文件再通过读取文件显示。
那么你是否有能力先把图片保存了被? 不会走路,怎么跳爵士舞?
luckyviolet07 2017-03-27
  • 打赏
  • 举报
回复
引用 5 楼 qq_17486399 的回复:
[quote=引用 4 楼 luckyviolet07 的回复:] [quote=引用 2 楼 crystal_lz 的回复:] 1.你自己都提到SetPixel 为什么就不自己试一下呢? 写两句代码很麻烦? 2.LockBits
我之前写了这段代码 Bitmap ^image1; //Loop through the images pixels to reset color. for (int x = 0; x < outWidth; x++) { for (int y = 0; y < outHeight; y++) { int i = x * outWidth + y; Color newColor = Color::FromArgb(out_rgb[i].red, out_rgb[i].green, out_rgb[i].blue); image1->SetPixel(x, y, newColor); } } this->pictureBox1->Image = image1; 运行到SetPixel的时候报错了,说我没有初始化对象。就是因为不知道怎么初始化建立Bitmap oject所以才提问的呀[/quote] 以前做C++的吗?仅仅想问一下。 另外把你的image1实例化一下, Bitmap image1=new Bitmap(); 如果你确定你用的C#语言应该是这样[/quote] 对的,以前用C++和C更多,没用过C#,也是刚刚开始学习用windows form application.写这个程序的目的就是让最后的图片可以直接通过读取buffer在picture box上显示出来,而不是先保存成图片文件再通过读取文件显示。
大鱼> 2017-03-27
  • 打赏
  • 举报
回复
引用 4 楼 luckyviolet07 的回复:
[quote=引用 2 楼 crystal_lz 的回复:] 1.你自己都提到SetPixel 为什么就不自己试一下呢? 写两句代码很麻烦? 2.LockBits
我之前写了这段代码 Bitmap ^image1; //Loop through the images pixels to reset color. for (int x = 0; x < outWidth; x++) { for (int y = 0; y < outHeight; y++) { int i = x * outWidth + y; Color newColor = Color::FromArgb(out_rgb[i].red, out_rgb[i].green, out_rgb[i].blue); image1->SetPixel(x, y, newColor); } } this->pictureBox1->Image = image1; 运行到SetPixel的时候报错了,说我没有初始化对象。就是因为不知道怎么初始化建立Bitmap oject所以才提问的呀[/quote] 以前做C++的吗?仅仅想问一下。 另外把你的image1实例化一下, Bitmap image1=new Bitmap(); 如果你确定你用的C#语言应该是这样
luckyviolet07 2017-03-27
  • 打赏
  • 举报
回复
引用 2 楼 crystal_lz 的回复:
1.你自己都提到SetPixel 为什么就不自己试一下呢? 写两句代码很麻烦? 2.LockBits
我之前写了这段代码 Bitmap ^image1; //Loop through the images pixels to reset color. for (int x = 0; x < outWidth; x++) { for (int y = 0; y < outHeight; y++) { int i = x * outWidth + y; Color newColor = Color::FromArgb(out_rgb[i].red, out_rgb[i].green, out_rgb[i].blue); image1->SetPixel(x, y, newColor); } } this->pictureBox1->Image = image1; 运行到SetPixel的时候报错了,说我没有初始化对象。就是因为不知道怎么初始化建立Bitmap oject所以才提问的呀
luckyviolet07 2017-03-27
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
没有宽和高?
宽高就是3840x2160,三通道
crystal_lz 2017-03-27
  • 打赏
  • 举报
回复
1.你自己都提到SetPixel 为什么就不自己试一下呢? 写两句代码很麻烦? 2.LockBits
xuzuning 2017-03-27
  • 打赏
  • 举报
回复
没有宽和高?

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧