mfc使鼠标点击输出翻转图片

时间: 2023-07-05 20:28:21 浏览: 53
可以使用MFC框架来实现鼠标点击事件,在点击图片时,将图片进行水平翻转并输出翻转后的图像。下面是一个示例代码: 首先,在MFC应用程序中创建一个对话框,添加一个图片控件(ID为IDC_IMAGE)和一个按钮控件(ID为IDC_BUTTON)。 然后,在对话框的类中添加以下代码: ```c++ // 在头文件中添加以下代码 private: bool flip_flag = false; // 默认不翻转 // 在.cpp文件中添加以下代码 void CMyDialog::OnLButtonDown(UINT nFlags, CPoint point) { flip_flag = !flip_flag; // 点击后翻转标志取反 // 调用更新图片的函数 updateImage(); CDialogEx::OnLButtonDown(nFlags, point); } void CMyDialog::OnBnClickedButton() { flip_flag = !flip_flag; // 点击后翻转标志取反 // 调用更新图片的函数 updateImage(); } void CMyDialog::updateImage() { // 获取图片控件句柄 CWnd* pWnd = GetDlgItem(IDC_IMAGE); CStatic* pStatic = (CStatic*)pWnd; // 加载图片并进行翻转 Mat img = imread("test.jpg"); Mat img_show; if (flip_flag) // 如果需要翻转 { flip(img, img_show, 1); // 进行水平翻转 } else { img_show = img.clone(); // 不翻转,直接显示原图 } // 将Mat类型转换为位图类型 CImage img_display; img_display.Create(img_show.cols, img_show.rows, 24); uchar* pDst = (uchar*)img_display.GetBits(); for (int i = 0; i < img_show.rows; ++i) { memcpy(pDst, img_show.ptr<uchar>(i), img_show.cols * 3); pDst += img_display.GetPitch(); } // 显示图片 pStatic->SetBitmap(img_display); } ``` 在上面的代码中,我们分别为图片控件和按钮控件添加了鼠标点击事件的处理函数。在处理函数中,首先将翻转标志取反,然后调用`updateImage()`函数进行更新图片的操作。`updateImage()`函数中,我们首先获取图片控件句柄,并使用OpenCV库中的`imread`函数加载图片。根据翻转标志,使用`flip`函数进行水平翻转或直接显示原图。然后将Mat类型转换为位图类型,并将位图显示在图片控件中。 最后,在对话框的`OnInitDialog()`函数中调用一次`updateImage()`函数,以显示初始状态的图片。 注意:在使用MFC框架中使用OpenCV库时,需要在项目属性中添加OpenCV库的路径和链接库。

相关推荐

最新推荐

recommend-type

mfc 实现 鼠标消息的响应

用户在窗口的不同区域移动鼠标时,光标将显示如下图所标识的不同箭头的形状。
recommend-type

MFC添加背景图片MFC添加背景图片

MFC添加背景图片MFC添加背景图片MFC添加背景图片MFC添加背景图片MFC添加背景图片MFC添加背景图片MFC添加背景图片
recommend-type

mfc实现简单文字输出

编写一个程序,在窗口中显示“VC中显示字体与背景”,字体颜色为红色,背景色为黄色,字体为宋体,字高40。
recommend-type

MFC的图片显示MFC的图片显示MFC的图片显示

如何告诉你用MFC 显示背景图片 如何告诉你用MFC 显示背景图片 如何告诉你用MFC 显示背景图片
recommend-type

VS2017 MFC 实测打包流程

VS2017 MFC 实测打包流程,可以实现MFC程序打包,并在其它机台上没有安装VS也可以正常运行。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

机器学习怎么将excel转为csv文件

机器学习是一种利用计算机算法和统计数据的方法来训练计算机来进行自动学习的科学,无法直接将excel文件转为csv文件。但是可以使用Python编程语言来读取Excel文件内容并将其保存为CSV文件。您可以使用Pandas库来读取Excel文件,并使用to_csv()函数将其保存为CSV格式。以下是代码示例: ```python import pandas as pd # 读取 Excel 文件 excel_data = pd.read_excel('example.xlsx') # 将数据保存为 CSV 文件 excel_data.to_csv('example.csv', index=
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。