MFC中显示像素值保存在二维数组中的BMP图像

该博客介绍了如何在MFC应用程序中显示存储在二维数组中的BMP图像。首先,将二维数组的像素值复制到一维BYTE数组中,然后利用CreateDIBSection和SetBitmapBits函数创建并设置位图,最后将其附加到CStatic控件以显示图像。
摘要由CSDN通过智能技术生成
	BYTE *imShow = new BYTE[height*width];
	
	for(int j=height-1,cur=0;j>=0;--j)
	{
		for(int i=0; i<width; ++i)
			imShow[cur++] = (BYTE)imRot[j][i];
	}


	if (m_bmp.m_hObject!=NULL) //判断
		m_bmp.DeleteObject();
	//载入图片
	/*HBITMAP show2Dbmp = CreateBitmap(width,height,1,24,NULL);
	DWORD error = GetLastError();*/
	PVOID pBits = NULL;
	BITMAPINFO *bi = (BITMAPINFO *) new unsigned char[ sizeof(BITMAPINFOHEADER) + 1024];
	//ZeroMemory(&bi,sizeof(bi));
	bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
	bi->bmiHeader.biWidth = width;
	bi->bmiHeader.biHeight = height;
	bi->bmiHeader.biPlanes = 1;
	bi->bmiHeader.biBitCount = 8;
	bi->bmiHeader.biCompression = BI_RGB;
	bi->bmiHeader.biSizeImage = (((width+3)/4)*4) * height;
	for(int n=0; n<256; n++)
	{
		bi->bmiColors[n].rgbRed=n;
		
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在MFC显示读取的参数图像可以通过以下步骤实现: 1. 首先,你需要在MFC应用程序的资源文件夹添加一个静态图片控件。你可以在资源视图选择对应的对话框,然后右键点击添加控件,在控件列表选择“Picture Control”并添加到对话框。 2. 接下来,在你的对话框类,找到OnInitDialog函数并添加以下代码: ``` CStatic* pImageControl = (CStatic*)GetDlgItem(IDC_STATIC_IMAGE); // 将IDC_STATIC_IMAGE替换为你在资源文件添加的图片控件的ID CImage image; image.Load(_T("path_to_your_image")); // 替换为你的图像路径 pImageControl->SetBitmap(image.Detach()); // 将图像显示到控件 ``` 3. 最后,你需要在你要显示图像的地方调用UpdateData()函数来更新对话框的控件。你可以在你的程序的任何地方调用它,例如在按钮点击事件或者在图像读取成功后。 ``` UpdateData(FALSE); // 显示最新的图像 ``` 这样,在MFC应用程序,你就可以显示读取的参数图像了。请确保替换代码的路径和控件ID为你自己的实际值,并且图像文件格式与Load函数支持的一致。 ### 回答2: 首先,在MFC应用程序,我们可以使用CImage类来加载和显示图像。下面是一个简单的步骤,用于在VC显示读取的参数图像: 1. 首先,确保已将图像文件添加到项目,并将其包含在您的源代码文件,以便可以访问图像的路径。 2. 在您的对话框类,声明一个CImage成员变量,例如: CImage m_Image; 3. 在OnInitDialog()方法,加载图像文件到CImage对象,例如: m_Image.Load(_T("图像文件路径")); 4. 然后,获取图像的宽度和高度,并将其用作绘图区域的大小,例如: int nWidth = m_Image.GetWidth(); int nHeight = m_Image.GetHeight(); CRect rect; GetDlgItem(IDC_STATIC_PICTURE)->GetClientRect(rect); // 假设您在对话框上有一个静态文本控件ID为IDC_STATIC_PICTURE rect.right = rect.left + nWidth; rect.bottom = rect.top + nHeight; 5. 创建一个DC并选择绘图区域,然后在绘图区域上绘制图像,例如: CDC* pDC = GetDlgItem(IDC_STATIC_PICTURE)->GetDC(); m_Image.Draw(pDC->m_hDC, rect); 6. 最后,释放DC并刷新静态文本控件,使图像显示在对话框上,例如: GetDlgItem(IDC_STATIC_PICTURE)->ReleaseDC(pDC); GetDlgItem(IDC_STATIC_PICTURE)->Invalidate(); 这样,您就可以在VC的MFC应用程序显示读取的参数图像了。请注意替换实际的图像文件路径和静态文本控件ID以适应您的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值