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 哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多 ...
随机推荐
- Android事件机制全然解析
android事件是一级一级传递的,假设父控件不拦截.就传给子控件,假设父控件想要消费事件也就是拦截事件的话,须要重写这种方法 public boolean onInterceptTouchEvent ...
- B. Friends and Presents(Codeforces Round #275(div2)
B. Friends and Presents time limit per test 1 second memory limit per test 256 megabytes input stand ...
- C++中,如何定义和使用指向成员函数的指针
/*** 定义指向成员函数的指针变量的形式 : 成员函数返回类型 (类名∷*指针变量名)(参数列表)* 成员函数指针变量值的形式 : &类名∷成员函数名;* 成员函数指针变量使用形式 : (对 ...
- HDU 5025Saving Tang Monk BFS + 二进制枚举状态
3A的题目,第一次TLE,是因为一次BFS起点到终点状态太多爆掉了时间. 第二次WA,是因为没有枚举蛇的状态. 解体思路: 因为蛇的数目是小于5只的,那就首先枚举是否杀死每只蛇即可. 然后多次BFS, ...
- Ural 1068 - Sum
Your task is to find the sum of all integer numbers lying between 1 and N inclusive. Input The input ...
- redis(五)redis与Mybatis的无缝整合让MyBatis透明的管理缓存二
在上一篇文中的Cahe类存在各种问题如:一直使用同一个连接,每次都创建新的Cache,项目中老是爆出connection timeout 的异常,存储的key过长等等一系列的问题,解决问题最好的办法就 ...
- python爬虫实战2百度贴吧爬html
转自:http://blog.csdn.net/wxg694175346/article/details/8927832 import string, urllib2 #定义百度函数 def baid ...
- HDU 4617Weapon(两条异面直线的距离)
Weapon Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Sub ...
- HTML5实现IP Camera网页输出
HTML5实现IP Camera网页输出 这两天做OA项目.有一个要通过IP Camera将视频流输出到浏览器端的模块.尽管如今买到的摄像头都会提供浏览器和client的实现,可是一般来说都是仅仅支持 ...
- ListView中加入Button后,Button的点击事件和ListView的点击事件冲突
1.在ItemView配置的xml文件里的根节点加入属性android:descendantFocusability="blocksDescendants" 2.在要加入事件的控件 ...