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,一经查实,立即删除!

相关文章

OSPF动态路由协议入门简介

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

解决 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…

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("")注解

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

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

mysql使用 BETWEEN AND 查询

例子&#xff1a;查询1000到1020区间的数据 BETWEEN AND

mysql使用IS NULL查询null值

mysql使用IS NULL查询null值

Spring Security 入门(1-9)国际化的使用

转载于:https://www.cnblogs.com/lexiaofei/p/7016222.html

html5 文档元素 header footer h1h2h4

文档元素: 用于在页面的大布局, 区分各个主体和概念. 让整体清晰, 元素有语义, 进一步代替div 具体划分图示: (参考) <hgroup> <section> <nav> <article> 里面又是一个可以添加<header\section\footer>的一整套的标签, 麻雀虽小五脏俱全 &l…

基于Java SSM框架实现医院挂号上班打卡系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现医院挂号上班打卡系统演示 摘要 在网络发展的时代&#xff0c;国家对人们的健康越来越重视&#xff0c;医院的医疗设备更加先进&#xff0c;医生的医术、服务水平也不断在提高&#xff0c;给用户带来了很大的选择余地&#xff0c;而且人们越来越追求更个…

CAN 设备通讯实验代码+HAL 与原生库分别实现

实验准备&#xff1a; 两块带有CAN 收发器的STM32 MCU板子 1.HAL 库实现部分 pin 设置&#xff0c;依据datasheet 和原理图 时钟设置 工程设置 1&#xff09; main.c /* USER CODE BEGIN Header */ /*********************************************************…

Spring AOP 面向切面编程

AOP 在软件业&#xff0c;AOP为Aspect Oriented Programming的缩写&#xff0c;意为&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续&#xff0c;是软件开发中的一个热点&#xff0c;也是Spring框架中的…