问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...出来,实现类似于matlab中imshow()或者imagesc()的功能?

发布网友 发布时间:2024-09-30 09:36

我来回答

1个回答

热心网友 时间:2024-10-25 19:27

在 MFC 中,可以通过使用 CDC 类的 BitBlt() 函数将二维数组直接显示为灰度图。具体步骤如下:

1. 创建一个 DIB(Device Independent Bitmap)对象,用于存储灰度图像数据。

2. 扫描二维数组中的每个元素,并将其转换为相应的颜色值。对于 8 位灰度图来说,每个像素点的颜色值范围是 0 到 255。

3. 将颜色值写入 DIB 对象中,并设置好图像的宽度和高度。

4. 使用 CDC 类的 BitBlt() 函数将 DIB 对象中的图像数据显示到指定的设备上,例如显示到画布或窗口中。

以下是示例代码:

```c++
// 假设输入的二维数组是 grayData,宽度为 width,高度为 height
int width = 320;
int height = 240;
BYTE* grayData = new BYTE[width * height];

// 创建 DIB 对象
BITMAPINFO bmi;
ZeroMemory(&bmi, sizeof(BITMAPINFO));
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = width;
bmi.bmiHeader.biHeight = -height; // 负数表示 top-down
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 8;
bmi.bmiHeader.biCompression = BI_RGB;
bmi.bmiHeader.biSizeImage = width * height;
HDC hdc = GetDC(hWnd); // hWnd 为窗口句柄
HBITMAP hBitmap = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, (void**)&grayData, NULL, 0);

// 将二维数组转换为灰度图数据
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
BYTE grayValue = ...; // 根据输入的二维数组计算出颜色值
grayData[y * width + x] = grayValue;
}
}

// 显示灰度图像
CDC* pDC = CDC::FromHandle(hdc);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.Attach(hBitmap);
CBitmap* pOldBmp = memDC.SelectObject(&bmp);
pDC->BitBlt(0, 0, width, height, &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(pOldBmp);
```

这样,就可以在 MFC 中将二维数组直接显示为灰度图了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 ...显示 image(A), imshow(A),imshow(A,[])分别有什么作用 office project 2010 我安装好了,请教如何激活? QQ:52748382 邮箱:52748... 求助!跪求黑户的解决办法! 怎样要回押金,跪求解决方法 黑心老板逼人走投无路,跪求帮助!!!感激涕零! 比较夏普的两款手机?SH9110C与SH6010C 夏普SH6010C手机利弊 做梦梦见和前妻在一起睡觉是什么征兆 ...旁边有快干了的血,像是车祸不过没有看见车。走了一会又看见路边有卖... 梦见自己开着老爸的车出去,看见别人出车祸。然后老爸的车也被偷了,请... 三星q470怎么开启键盘背光 按FN只有USB接口亮灯 安卓游戏市场哪个好用 安卓手机游戏下载平台推荐TOP5,最稳定值得信赖! ...梦见同一个女性朋友,两次在梦里都是勾引我男朋友,在梦里她用的招术... 支付宝转账免费方法 威高上海产业园区-威高云行智创园 Win10系统电脑开机弹出officebackgroundtaskhandler.exe如何解决 急求好听的英文名啊~~~!! 苹果手机,微信好友删除了想要恢复!他通过二维码加的我,互相没有评_百... 和男朋友第一个圣诞节对他说的话 ...摘瓜被黑狗追后把狗眼睛打瞎给它嘴里放石头这是什么梦? 牟氏庄园电视剧在哪里拍摄的 ...收获了,现在要退货,卖家说确认收货了之后运费险就不好使了,没有用... 买家确认收货,运费险失效,买家退货,卖家确认收货了 失效激活卡还有用... 怎么设置华为手机通话按键 ...我带4部手机 可以的不?一般明确规定是可以带多少,如果发现了,会怎么... 诺基亚C7怎么样?现在买值不值? 诺基亚c7最新版本问题 诺基亚C7的那个侧滑锁感觉好松 求 耐用不耐用啊 河津中学录取分数线是多少? 吊顶多少钱一个平方 业内人士详解 我用的是是诺基亚C7,求高手指点怎么把一键锁屏放到桌面,就是快捷方式... 河津一中今年分数线多少分? 发送视频文件过大怎么办 2022年河津中学录取分数线是多少分 诺基亚c7有画图解锁软件吗 河津市一中中考录取分数线多少 诺基亚C7-00如何用手电灯 c# vs2010 与导入类有冲突这样的警告怎么解决? 求vs2010 c#连接App_Data里的sql sever数据库的代码?