MFC 使用 Picture control 显示图片和数据流

一、使用现有的图片文件显示在 界面 picture 控件

  1. 在MFC picture 加载bitmap 图片方法
  2. 图片可以是从资源文件夹来的,也可以是文件路径等
  3. CBitMap 载入图像接口 有两种方式
    BOOL LoadBitmap(LPCTSTR lpszResourceName); // 资源文件名
    BOOL LoadBitmap(UINT nIDResource); // 资源ID
    CreateBitmap; // 创建一个,指定参数的bitmap图片
void MyVideo::OnBnClickedBtnAppyset()
{// TODO: 在此添加控件通知处理程序代码CBitmap img;	// 这里不能使用 指针if (!img.LoadBitmap(IDB_BITMAP2))	{std::cout << "asdasd" << std::endl;}CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATICPICTURE);pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);pStatic->SetBitmap((HBITMAP)img);
}

在这里插入图片描述

二、 显示从USB 或者其他网络获取的图像数据流

  1. 图像视频刷新定时器时间
void MyVideo::slotRefVideoTimer()
{m_videoQueueMutex->lock();if (m_videoQueue.size()){GUI_PW("%s", "show image");unsigned char * data = m_videoQueue.front();// 图像数据流unsigned char * rgb = (unsigned char *)malloc(256 * 192 * 3);		yuv422torgb(rgb, data, GUIDE_RES_WIDETH, GUIDE_RES_HEIGHT);if (m_startSaveRgb){char saveFileName[256] = { 0 };snprintf(saveFileName, sizeof(saveFileName), "RGB/%d.raw", time(0));FILE* fp = NULL;fopen_s(&fp ,saveFileName, "ab+");if (NULL != fp){CORE_PW("%s fopen success !", saveFileName);fwrite(rgb, 1, 256 * 192 * 3, fp);fclose(fp);}else{CORE_PW("%s fopen fail !", saveFileName);}m_startSaveRgb = false;}// 显示图片到 IDC_STATICPICTURE 界面控件ShowRGBToWnd(IDC_STATICPICTURE, rgb, GUIDE_RES_WIDETH, GUIDE_RES_HEIGHT);free(data);free(rgb);m_videoQueue.pop_front();}m_videoQueueMutex->unlock();
}
  1. 将 USB 摄像头 数据流构造成 bitmap 画到界面
void MyVideo::ShowRGBToWnd(UINT hWnd, unsigned char *rgbImageData, int width, int height)
{m_framIndex++;cout << "frame index =" << m_framIndex << endl;// 制作bitmapinfo(数据头)BITMAPINFO bitInfo;bitInfo.bmiHeader.biBitCount = 8 * 3;	// RGB 888 3个字节bitInfo.bmiHeader.biWidth = width;bitInfo.bmiHeader.biHeight = -height;   //注意"-"号(正数时倒着绘制)bitInfo.bmiHeader.biPlanes = 1;bitInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);bitInfo.bmiHeader.biCompression = BI_RGB;bitInfo.bmiHeader.biClrImportant = 0;bitInfo.bmiHeader.biClrUsed = 0;bitInfo.bmiHeader.biSizeImage = 0;bitInfo.bmiHeader.biXPelsPerMeter = 0;bitInfo.bmiHeader.biYPelsPerMeter = 0;CDC *pDC = GetDlgItem(hWnd)->GetDC();  //获取图片控件DC//绘图::StretchDIBits(pDC->GetSafeHdc(),0, 0, 256* m_scaleValue, 192* m_scaleValue,			// 按照用户选择放大0, 0, 256, 192,rgbImageData,&bitInfo,DIB_RGB_COLORS,SRCCOPY);cout << "current scale StretchDIBits  = " << m_scaleValue;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC 对话框添加重写初始化对话框函数来设置界面

BOOL MyVideo::OnInitDialog() {CDialogEx::OnInitDialog(); // 调用父类// TODO: 在此添加额外的初始化imageScaleValue.SetCurSel(0);imageScaleValue.AddString(_T("1"));imageScaleValue.AddString(_T("2"));imageScaleValue.AddString(_T("3&qu…

OSPF动态路由协议入门简介

——随着Internet技术在全球范围的飞速发展&#xff0c;OSPF已成为目前Internet广域网和Intranet企业网采用最多、应用最广泛的路由协议之一。OSPF&#xff08;Open Shortest Path First&#xff09;路由协议是由IETF&#xff08;Internet Engineering Task Force&#xff09;I…

linux磁盘冗余阵列

RAID防止硬盘物理损坏以及增加存储设备的吞吐量&#xff0c;RAID常见的组合有0、1、5、和10RAID0:至少需要两块硬盘&#xff0c;可以有效提高硬盘的性能和吞吐量&#xff0c;但没有数据的冗余和错误修复能力将多块硬盘通过硬件或软件的方式串联在一起&#xff0c;成为一个大的卷…

关于管理的经典故事(员工激励)

员工管理和激励是一个复杂的事情&#xff0c;有时让管理者摸不着头脑&#xff0c;甚至感到头疼。销售管理往往并非现场管理&#xff0c;遥控管理无形之中增加了管理的难度。轻松一下&#xff0c;看看以下的十个经典故事&#xff0c;也许你会领略到管理的另一种意境。 一、 分工…

解决 413 Request Entity Too Large(请求实体太大)

今天做上传视频&#xff0c;报错413 Request Entity Too Large 我们可以看到请求的body的大小&#xff0c;在Content-Length后显示&#xff0c;Nginx默认的request body为1M&#xff0c;小于我们上传的大小 解决方案 找到自己主机的nginx.conf配置文件&#xff0c;打开 在http…

YUV422 转换成 RGB

#define CLIPVALUE(x, minValue, maxValue) ((x) < (minValue) ? (minValue) : ((x) > (maxValue) ? (maxValue) : (x))) #define YUVToR(Y, U, V) ( (Y) 1.4075 * ((V) - 128) ) #define YUVToG(Y, U, V) ( (Y) - 0.3455 * ((U) - 128) - 0.7169 * ((V) - 128) ) #de…

带参数的方法

1.语法&#xff1a; <访问修饰符>放回值类型<方法名><(形式方法列表)>{ //方法的主体 } 2.调用带参方法 语法&#xff1a;对象名.方法名&#xff08;参数1&#xff0c;参数2.....参数N&#xff09; 转载于:https://www.cnblogs.com/zyani/p/6…

【oracle灾备方案系列】基于DDS的Oracle复制容灾方案(三)

<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />【oracle灾备方案系列】基于DDS的Oracle灾备方案&#xff08;三&#xff09;1. 数据查询应用平台方案1.1. 构建企业的第二数据中心在基于DataGrid DDS产品实现灾备架构中&am…

MFC 让界面点击无效

把 Disableed 设置为 True 就是让界面不再接受鼠标等控制。

关于 There is no getter for property named ‘id‘ in ‘class java.lang.Integer‘

errMsgorg.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named parentId in class java.lang.Integer 加上 Param("")注解

HTML5录音控件

最近的项目又需要用到录音&#xff0c;年前有过调研&#xff0c;再次翻出来使用&#xff0c;这里做一个记录。 HTML5提供了录音支持&#xff0c;因此可以方便使用HTML5来录音&#xff0c;来实现录音、语音识别等功能&#xff0c;语音开发必备。但是ES标准提供的API并不人性化&a…

关闭 MFC 界面程序控制台输出窗口

MFC 界面控制台界面窗口&#xff0c;在运行程序的时候会弹出来&#xff0c; 为了调试可以显示输出 printf 或 cout 信息&#xff0c;要关闭的话在程序入口处添加freeconsole() 函数进行设置。 避免多个窗口显示影响操作 CMainFrame::CMainFrame() {// TODO: 在此添加成员初始化…

SVN更新的时候报断言失败解决办法

解决办法&#xff1a;没啥好方法&#xff0c;重新检出代码就好使了。 转载于:https://www.cnblogs.com/yuanchaoyong/p/6999496.html

高德 ASIC 256 模组快门状态实时获取方案

1、快门状态命令 这个状态是由 ASIC 程序操作快门后记录的&#xff0c;如果是断电下的意外振动关闭是无法记录的 2、快门状态获取解决办法 根据快门闭合后的特征: 1) 温度均匀&#xff0c; 目标物体温度基本等于快门温度 2) 图像无轮廓线条和角点 3、快门状态实时检测线程 实…

C#委托

委托是一种引用方法的类型。委托定义出它想要代表的方法的原型&#xff0c;然后它可以和任何符合它所定义的方法的原型相关联。但使用委托时就犹如你在调用一个方法。委托使你动态的调用方法变成可能。而动态调用方法的意义就在于你可以在任意的地方插入任意的代码//using Syst…

JS 倒计时插件

剩余时间 <span class"djtime"><i id"t_h"></i><span>:</span><i id"t_m"></i><span>:</span><i id"t_s"></i></span></span> <script type"…

c++ 简单抽象工厂实现方法

实现基类 Shape实现 Shape 基类子类 两个实现创建子类对象的工厂类 #include <iostream> #include <map> using namespace std; class Shape //接口 { public:Shape() {cout << "Shape" << endl;}virtual ~Shape(){cout << "~Sh…