源代码地址: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.1.5-学习Opencv与MFC混合编程之---画图工具 输入文字和填充图像 修改光标

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961696 输入文字 l 对话框 1.    插入,资源,选择对话框资源 2.    编辑对话框如下: ...

  2. 1.1.4-学习Opencv与MFC混合编程之---画图工具 画椭圆

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961690 1.    增加‘椭圆’菜单项,设置属性,添加类向导: 2.    编辑消息处理函数, ...

  3. 1.1.3-学习Opencv与MFC混合编程之---画图工具 通过对话框进行工具的参数设置 画曲线 绘图校正

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961688 l 对话框 1.“插入”->“资源”->“对话框” 2.对话框属性如下: 双击 ...

  4. 1.1-学习Opencv与MFC混合编程之---利用画图函数,生成视频,并写入视频文件

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961674 写视频文件 Ø 新建菜单项,Learning OpenCV——> OpenCVr ...

  5. 1.0.x-学习Opencv与MFC混合编程之---视频运动检测

    源代码地址: http://download.csdn.net/detail/nuptboyzhb/3961668 版本1.0.x新增内容 视频运动检测 Ø 新建菜单项,Learning OpenCV ...

  6. 1.0.3-学习Opencv与MFC混合编程之---打开本地摄像头

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961643 版本1.0.3新增内容 打开摄像头 Ø 新建菜单项,Learning OpenCV——&g ...

  7. 1.0.2-学习Opencv与MFC混合编程之---为播放AVI视频添加滑动条

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961642 版本1.0.2新增内容 Ø  全局变量和函数的添加: 在CVMFCview.cpp文件 ...

  8. 1.0.1-学习Opencv与MFC混合编程之---播放AVI视频

    资源源代码:http://download.csdn.net/detail/nuptboyzhb/3961639 版本1.0.1新增内容 Ø  新建菜单项,Learning OpenCV——> ...

  9. 1.1.7-学习Opencv与MFC混合编程之---为画图工具添加工具栏

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961701 哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多 ...

随机推荐

  1. Android 自定义view实现水波纹效果

    http://blog.csdn.net/tianjian4592/article/details/44222565 在实际的开发中,很多时候还会遇到相对比较复杂的需求,比如产品妹纸或UI妹纸在哪看了 ...

  2. SQL语句简单记录

    SQL SERVER 新增列与默认值 alter table 表名 add 列明 bit default 0 not null 删除列(容易删除失败) alter table 表名 drop colu ...

  3. 几个BCB例子

    http://blog.163.com/tab_98/blog/static/11924097201511274543737/

  4. 基于visual Studio2013解决C语言竞赛题之0516人来人往

     题目

  5. SilkTest天龙八部系列5-类的属性

    SilkTest的面向对象机制让用户可以为类定义属性,用property语句实现.除此以外用户在类中还可以定义成员变量和不可变的setting属性.也就是是说Silktest类中可以有以下三种属性/变 ...

  6. 标准I/O库函数的缺陷

    标准IO库存在着两个缺陷.首先,它是在某一台特定类型的机器上实现的,而没有考虑其他的具有不同特性的机器.这样就可能导致在其中的一台机器上运行很好的程序,在另外一台机器上却出现错误,而这其中的原因仅仅是 ...

  7. 知识点2-5:了解Razor语法

    以往开发ASP.NET Web Form时,在ASPX页面上都会出现许多夹杂C#/VB.NET与HTML的情况,而先前使用<%...%>这种传统圆角括号的表示法会让HTML标签与ASP.N ...

  8. Mac OSX的开机启动配置

    Login Items Mac OSX的当前用户成功登录后启动的程序,该类别的启动项配置文件存放在~/Library/Preferences/com.apple.loginitems.plist,所以 ...

  9. servlet的url-pattern匹配规则详细描述

    一.概述 在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则,但servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是由自己的规则,比较容易混淆.本文来 ...

  10. mysql数据库修改数据库编码,字段编码与表编码(转) good

    最近看了一下KIGG框架,发现在用EF + MYSQL数据库时,数据出现了乱码,用工具(Navicat )查看一下表category的结构发现 KIGG 数据库的默认情况是用latin1编码的(DEF ...