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 哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多 ...
随机推荐
- 注解配置 ssh
注解 <?xml version="1.0" encoding="UTF-8"? > <beans xmlns="http://ww ...
- HDU 5045 Contest(状压DP)
Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...
- [置顶] C++ Pirate: Lambda vs Bind
Lambda 与 Bind的性能比较 转载请说明出处:http://blog.csdn.net/cywosp/article/details/9379403 先让我们看看下面函数: template ...
- C#自学笔记总结
一.变量:声明变量的语法:变量类型 变量名; 变量名=值;变量类型 变量名=值: 在使用变量的时候要注意:变量一定要先声明,再赋值,最后使用例子: 变量的特点:1.不能够被重复的声明2.可以被重复的赋 ...
- 斯坦福大学IOS开发课程笔记(第七课第一部分)
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/31462099 作者:小马 这节课的内容太多,分两部分介绍.本节课主要是介绍怎样开发 ...
- Codeforces 85D Sum of Medians(线段树)
题目链接:Codeforces 85D - Sum of Medians 题目大意:N个操作,add x:向集合中加入x:del x:删除集合中的x:sum:将集合排序后,将集合中全部下标i % 5 ...
- PHP - mysql使用参数数据
"SELECT dg_id FROM dg_user WHERE dg_username = '{$clean['username']}' LIMIT 1","该用户已经 ...
- assert()用法
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:[1] #include <assert.h>void assert( ...
- java--多线程之Runnable
引读: 上一篇博文中讲了Thread的继承,存在一个问题就是,如果类本身已经继承了某个父类,又要继承Thread,导致多重继承. [但是我们知道接口是实现多重继承的重要方式].java提供了Runna ...
- 浅尝key-value数据库(三)——MongoDB的分布式
浅尝key-value数据库(三)——MongoDB的分布式 测试了单机MongoDB的随机读和写入性能,这一节来讲一讲MongoDB的分布式. MongoDB的分布式分成两种,一种是Replicat ...