IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> MFC初探 —— 双击Picture Control具体位置放大图片 -> 正文阅读

[人工智能]MFC初探 —— 双击Picture Control具体位置放大图片

主要功能:在PictureControl中,双击位置1,图片就在位置1的位置进行放大,再次双击缩小至原图像。

1、为Picture Control添加控件事件 ——我这里命名为:OnStnDblclickStaticMark

?

?2、设置该控件属性的通知为true,即双击时将向其父级发送通知,默认不通知。

?

3、在事件中添加代码块

注意:其中有一部分为全局变量:

cvPicMark表示opencv读入的图片

d_ZoomRadioMark表示图形的缩放比例


void CCameraTemplate::OnStnDblclickStaticMark()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	CRect rect;
	//获取PictureControl控件区域,IDC_PICTURE为PictureControl的ID
	GetDlgItem(IDC_PICTURE)->GetWindowRect(&rect);
	// 将屏幕坐标切换至客户坐标
	ScreenToClient(&rect);
	
	// 获取当前鼠标的客户坐标
	CPoint   mypoint;
	GetCursorPos(&mypoint);
	ScreenToClient(&mypoint);
	
	// 注意:cvPicMark表示opencv读入的图片
	// rectUse为图片区域
	CRect rectUse;
	rectUse.top = rect.top;
	rectUse.left = rect.left;
	rectUse.bottom = rectUse.top + cvPicMark.rows;
	rectUse.right = rectUse.left + cvPicMark.cols;

	// 鼠标在PictureControl中的相对坐标
	CPoint picPoint;
	picPoint.x = mypoint.x - rectUse.left;
	picPoint.y = mypoint.y - rectUse.top;

	//判断鼠标点击坐标是否在图片区域内
	if (rectUse.PtInRect(mypoint))
	{
		// 缩放后的图片
		cv::Mat zoomPicMark;
		// 截取后的剩余部分图片
		cv::Mat imagePart;
		// 图片的高.宽
		int height = 0;  
		int weight = 0; 
		// 放大后图片的右上角坐标
		int picCutTop = 0;
		int picCutLeft = 0;
		if (d_ZoomRadioMark == 1)//放大图片
		{
			d_ZoomRadioMark = 2;

            //GetFixMat()改变Mat图像的大小,以适应窗体。但不改图像比例,图像不变形。
			GetFixMat(cvOriPicMark, zoomPicMark, cvPicMark.rows * d_ZoomRadioMark, cvPicMark.cols * d_ZoomRadioMark);
			picCutTop = (int)((double)picPoint.x * (d_ZoomRadioMark - 1));
			picCutLeft = (int)((double)picPoint.y * (d_ZoomRadioMark - 1));
			height = zoomPicMark.rows - picCutTop;
			weight = zoomPicMark.cols - picCutLeft;
		}
		else                     // 还原图像
		{
			d_ZoomRadioMark = 1;
			zoomPicMark = cvPicMark;
			picCutTop = 0;
			picCutLeft = 0;
			height = zoomPicMark.rows;
			weight = zoomPicMark.cols;
		}
		if (zoomPicMark.rows > rect.bottom - rect.top)
		{
			height = rect.bottom - rect.top;
		}
		if (zoomPicMark.cols > rect.right - rect.left)
		{
			weight = rect.right - rect.left;
		}
		imagePart = zoomPicMark(cv::Rect(picCutTop, picCutLeft, weight, height));

        // Mat2CImage()将mat图片转image
		Mat2CImage(imagePart, msPicMark);

		GetDlgItem(IDC_PICTURE)->GetWindowRect(&rect);
		ScreenToClient(rect);
		InvalidateRect(rect);

	}
	UpdateData(FALSE);
}
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 15:58:47  更:2021-12-18 16:01:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 0:15:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码