源代码地址: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. C#个人笔记

    1.扩展方法:类名前面加static ,方法参数前 加this,如:对string类进行扩展 public static class string    {        public static ...

  2. 自己新建Xib 和.h .m文件关联

    代理中注意点 1.新建MainViewController.h 和 MainViewController.m文件: 新建Main.xib文件: 2.拖View到Main.xib中: 3.点击File’ ...

  3. OC-多线程GCD的使用细节

    1>GCD,全称Grand Central Dispatch,”牛逼的中枢调度器”,纯C语言,提供了非常多强大的函数2>GCD优势:(1)GCD是苹果公司为多核的并行运算提出的解决方案(2 ...

  4. OpenGL ES 如何能看到一个物体内部和象3dmax中能只显示网格线

    上一篇 OpenGL ES 正反面设置指令 中分析了正反面的判区方法,那么正反面有什么用呢?接下来我们就要引入一个叫做背面消除的概念.在3dmax中有个选项,当你用挤压修改器挤出一个中空的长方体时,在 ...

  5. JavaScript 的数组操作--删除元素

    在JavaScript中,可以很方便的删除指定位置的元素,这个是用到 splice方法, 该方法用于删除或替换数组中的部分数据. 其语法定义是 : splice(start , count [,new ...

  6. 网页制作之html基础学习4-格式与布局

    1.position:fixed 锁定位置(相对于浏览器的位置),例如有些网站的右下角弹窗 例: <head> <title>123</title> <sty ...

  7. BZOJ 2795: [Poi2012]A Horrible Poem( hash )

    ...字符串hash. 假如长度x是一个循环节, 那么对于任意n(x | n)也是一个循环节. 设当前询问区间[l, r]长度为len = ∏piai, 最终答案ans = ∏piai' ,我们只需枚 ...

  8. HDOJ 3047 带权并查集

    解题思路转自: http://blog.csdn.net/azheng51714/article/details/8500459 http://blog.csdn.net/acresume/artic ...

  9. 基于visual Studio2013解决C语言竞赛题之0702函数设计

       题目

  10. [Boost]boost的时间和日期处理-(2)时间的操作

    <开篇> 本篇紧接着boost上篇叙述Boost::DateTime的时间处理.在C++中,常见的时间有time_t, FILETIME和tm,而boost中用ptime. 构造ptime ...