1.1.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形
源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961685
画图工具
1. 画直线
Ø 增加‘直线’菜单项,建立类向导;
Ø 对CXXXXXXView类增加成员变量my_draw_flag.并在构造函数中初始化为0
Ø 在‘直线’菜单项处理函数中,将my_draw_flag=1;表示画直线
Ø 增加window消息处理,WM_LBUTTONDOWN 和WM_MOUSEMOVE和WM_LBUTTONUP
Ø 增加成员变量
在构造函数里初始化为0;
增加int型成员变量OnLButtonDownRunFlag,OnLButtonUpRunFlag。并在View类的构造函数中进行初始化为0;
增加IplImage型成员变量
Ø 在OnLButtonDown(UINT nFlags, CPoint point)函数中,保存鼠标按下时的点:
my_cvpoint1=cvPoint(point.x,point.y);
OnLButtonDownRunFlag=1;
OnLButtonUpRunFlag=0;
bufImg=cvCloneImage(workImg);//bufImg是为了保存每次画图结束后的图像。
Ø 在OnMouseMove(UINT nFlags, CPoint point)函数中,编辑代码如下:
if(OnLButtonDownRunFlag&&OnLButtonUpRunFlag==0)
{
CvPointiner_point=cvPoint(point.x,point.y);
IplImage*src;
if(!workImg)
{
return;
}
intthickness,colorR,colorG,colorB;
thickness=2;//线条宽度
colorR=0;
colorG=255;
colorB=0;
src=cvCloneImage(bufImg);
switch(my_draw_flag)
{
case0:
break;
case1:
cvFlip(src);
cvLine(src,my_cvpoint1,iner_point,cvScalar(colorR,colorG,colorB),thickness);
cvFlip(src);
workImg=cvCloneImage(src);//显示当前一条直线
Invalidate();//重绘
break;
}
cvReleaseImage(&src);
}
CScrollView::OnMouseMove(nFlags,point);
Ø 鼠标按下的消息处理函数
void CCVMFCView::OnLButtonUp(UINTnFlags, CPoint point)
OnLButtonUpRunFlag=1;
OnLButtonDownRunFlag=0;
画矩形
1. 添加画‘矩形’菜单项
2. 设置属性如下:
3. 建立类向导,编辑消息响应函数:
void CCVMFCView::OnMyDrawRectangle()
{
//TODO: Add your command handler code here
my_draw_flag=2;
}
4. 在mousemove消息响应函数里,添加
cvFlip(src);
cvRectangle(src,my_cvpoint1,iner_point,cvScalar(colorR,colorG,colorB),thickness);
cvFlip(src);
workImg=cvCloneImage(src);//显示当前的矩形
Invalidate();//重绘
画圆
添加菜单的步骤同添加矩形的步骤:
关键是编写case 3:的代码
case 3:
int r=0;
r=(int)sqrt((iner_point.x-my_cvpoint1.x)*(iner_point.x-my_cvpoint1.x)
+(iner_point.y-my_cvpoint1.y)*(iner_point.y-my_cvpoint1.y));
cvFlip(src);
cvCircle(src,my_cvpoint1,r,cvScalar(colorB,colorG,colorR),thickness);
cvFlip(src);
workImg=cvCloneImage(src);//显示当前的矩形
Invalidate();//重绘
break;
from:http://blog.csdn.net/nupt123456789/article/details/7100144
1.1.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形的更多相关文章
- 1.1.5-学习Opencv与MFC混合编程之---画图工具 输入文字和填充图像 修改光标
源代码:http://download.csdn.net/detail/nuptboyzhb/3961696 输入文字 l 对话框 1. 插入,资源,选择对话框资源 2. 编辑对话框如下: ...
- 1.1.4-学习Opencv与MFC混合编程之---画图工具 画椭圆
源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961690 1. 增加‘椭圆’菜单项,设置属性,添加类向导: 2. 编辑消息处理函数, ...
- 1.1.3-学习Opencv与MFC混合编程之---画图工具 通过对话框进行工具的参数设置 画曲线 绘图校正
源代码:http://download.csdn.net/detail/nuptboyzhb/3961688 l 对话框 1.“插入”->“资源”->“对话框” 2.对话框属性如下: 双击 ...
- 1.1-学习Opencv与MFC混合编程之---利用画图函数,生成视频,并写入视频文件
源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961674 写视频文件 Ø 新建菜单项,Learning OpenCV——> OpenCVr ...
- 1.0.x-学习Opencv与MFC混合编程之---视频运动检测
源代码地址: http://download.csdn.net/detail/nuptboyzhb/3961668 版本1.0.x新增内容 视频运动检测 Ø 新建菜单项,Learning OpenCV ...
- 1.0.3-学习Opencv与MFC混合编程之---打开本地摄像头
源代码:http://download.csdn.net/detail/nuptboyzhb/3961643 版本1.0.3新增内容 打开摄像头 Ø 新建菜单项,Learning OpenCV——&g ...
- 1.0.2-学习Opencv与MFC混合编程之---为播放AVI视频添加滑动条
源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961642 版本1.0.2新增内容 Ø 全局变量和函数的添加: 在CVMFCview.cpp文件 ...
- 1.0.1-学习Opencv与MFC混合编程之---播放AVI视频
资源源代码:http://download.csdn.net/detail/nuptboyzhb/3961639 版本1.0.1新增内容 Ø 新建菜单项,Learning OpenCV——> ...
- 1.1.7-学习Opencv与MFC混合编程之---为画图工具添加工具栏
源代码:http://download.csdn.net/detail/nuptboyzhb/3961701 哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多 ...
随机推荐
- [转] iOS应用架构谈 网络层设计方案
原文地址:http://casatwy.com/iosying-yong-jia-gou-tan-wang-luo-ceng-she-ji-fang-an.html iOS应用架构谈 开篇 iOS应用 ...
- CentOS用yum安装搭建LAMP
#1.安装Apache yum install httpd httpd-devel #启动apache /etc/init.d/httpd start #设为开机启动: chkconfig httpd ...
- eclipse+tomcat+maven debug的时候总是出现source not found /Edit lookup path...的问题解决方案
eclipse+tomcat+maven debug的时候总是出现source not found /Edit lookup path...的问题解决方案 这个问题纠结好久好久.... 问题出现的环 ...
- jq商品展示图放大镜 and 原生js和html5写的放大镜效果 ~~效果不错
<!DOCTYPE HTML><html lang="en-US"><head> <meta charset="UTF-8&qu ...
- cglib源码学习交流
背景 前段时间在工作中,包括一些代码阅读过程中,spring aop经常性的会看到cglib中的相关内容,包括BeanCopier,BulkBean,Enancher等内容,以前虽大致知道一些内容,原 ...
- 如何A掉未来程序改
话说有这样一道神题:[集训队互测2015]未来程序·改. 大意是要求写一个简单的C++解释器!这里去掉了C++的许多特性,连简单的break和continue都没有了! 话说NOI被屠了之后,一时心血 ...
- Android中如何查找内存泄露
1.首先确定是否有内存泄露及哪个程序造成. 1.1.内存泄露已弹出out of memory对话框的情况. 这种情况很简单,直接看对话框就知道是哪个应用的问题了.然后再分析该应用是否是因为内存泄露造成 ...
- WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇]
原文:WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇] 通过<实现篇>对WSDL元素和终结点三要素的之间的匹配关系的介绍,我们知道了WSDL的Binding ...
- 修改 Mac 默认 PHP 运行环境,给 MAMP 配置全局 Composer
在没有配置全局性的 Composer 的时候,如果你在没有安装 Composer 的目录下运行 Composer 命令,比如:create-project 系统会返回: Could not open ...
- [HDU 1358]Period[kmp求周期]
题意: 每一个power前缀的周期数(>1). 思路: kmp的next. 每一个前缀都询问一遍. #include <cstring> #include <cstdio> ...