源代码:http://download.csdn.net/detail/nuptboyzhb/3961688

l 对话框

1.“插入”->“资源”->“对话框”

2.对话框属性如下:

双击对话框,建立对话框类。取名:LineParameter

3.在LineParameter.h头文件中添加#include "resource.h",否则:会报错:IDD_DIALOG4未定义

4.为LineParameter类增加如下成员变量:

int m_colorR;

int m_colorG;

int m_colorB;

int m_PenWidth;

5.在构造函数中,初始化变量:

LineParameter::LineParameter(CWnd*pParent /*=NULL*/)

: CDialog(LineParameter::IDD, pParent)

{

//{{AFX_DATA_INIT(LineParameter)

// NOTE: the ClassWizard will addmember initialization here

//}}AFX_DATA_INIT

//初始化数据

m_colorB=0;

m_colorG=0;

m_colorR=0;

m_PenWidth=1;

}

6.在数据交换函数里,交换成员变量与相应控件的数据:

voidLineParameter::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(LineParameter)

// NOTE: the ClassWizard will addDDX and DDV calls here

DDX_Text(pDX, IDC_COLOR_R,m_colorR);

DDV_MinMaxInt(pDX,m_colorR, 0, 255);

DDX_Text(pDX, IDC_COLOR_G,m_colorG);

DDV_MinMaxInt(pDX,m_colorG, 0, 255);

DDX_Text(pDX, IDC_COLOR_B,m_colorB);

DDV_MinMaxInt(pDX,m_colorB, 0, 255);

DDX_Text(pDX, IDC_WIDTH, m_PenWidth);

DDV_MinMaxInt(pDX, m_PenWidth, 1, 50);

//}}AFX_DATA_MAP

}

7.为确认按键添加消息处理函数:

voidLineParameter::OnOK()

{

// TODO: Add extra validation here

UpdateData(TRUE);  // 把控件上的数据写入成员变量

if ((m_colorR>=0&&m_colorR<=255)&&(m_colorG>=0&&m_colorG<=255)&&(m_colorB>=0&&m_colorB<=255))

{

CDialog::OnOK();  // 关闭对话框

}

else

{

MessageBox("请输入0-255之间的数字", "错误提示", MB_ICONEXCLAMATION | MB_OK);

}

}

l 使用对话框

1.    在CXXXXXXView类中增加成员变量,并在构造函数中进行初始化;

int m_LineWidth;

int m_ColorB;

int m_ColorG;

int m_ColorR;

2.    分别在‘直线’,‘圆’,‘矩形’菜单项的消息处理函数里添加LineParameter对话框对象;并将对话框输入的数据传递给相应的成员变量:

LineParameter dlg;

if(dlg.DoModal() != IDOK)

{

return;

}

m_ColorR=dlg.m_colorR;

m_ColorG=dlg.m_colorG;

m_ColorB=dlg.m_colorB;

m_LineWidth=dlg.m_PenWidth;

//删除对话框

deletedlg;

3.    修改OnMouseMove消息处理函数,将CXXXXView类的相应成员变量值赋值于画图所需的参数,(RGB颜色和线宽)

画图准确定的校正问题:

问题的提出:

运行结果表明:鼠标按下的点,与图像上显示的点有较大的差距。而鼠标移动时的点,和图像上的点完全一致。因此考虑将第一次鼠标移动后的点作为画线的起始点:

1.    添加CXXXXView成员变量,OnMouseMoveFlag,用于记录鼠标移动的次数。在构造函数里将其初始化为0;

2.    每次运行OnMouseMove消息处理函数,该标志加一。

3.    当OnMouseMoveFlag的时候,将此时的点,保存到起始点:

my_cvpoint1=cvPoint(point.x,point.y);

4.    为防止OnMouseMoveFlag增加过快而溢出,在此后的语句中将其赋值为3,:OnMouseMoveFlag=3;

5.    在每次鼠标按下和鼠标抬起时均初始化该变量

OnMouseMoveFlag=0;

画曲线

1.    增加‘曲线’菜单项;设置相应的属性,添加类向导,编辑消息响应函数:

voidCCVMFCView::OnMyDrawCurve()

{

// TODO: Add your command handler code here

my_draw_flag=4;

LineParameter dlg;

if (dlg.DoModal() != IDOK)

{

return;

}

m_ColorR=dlg.m_colorR;

m_ColorG=dlg.m_colorG;

m_ColorB=dlg.m_colorB;

m_LineWidth=dlg.m_PenWidth;

//删除对话框

deletedlg;

}

2.    修改OnMouseMove消息处理函数。增加case 4:的消息处理:

case 4://当选择画曲线时

cvFlip(workImg);

cvLine(workImg,my_cvpoint1,iner_point,cvScalar(colorB,colorG,colorR),thickness);

cvFlip(workImg);

my_cvpoint1=cvPoint(point.x,point.y);

Invalidate();//重绘

break;

from:http://blog.csdn.net/nupt123456789/article/details/7100150

1.1.3-学习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.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961685 画图工具 1.     画直线 Ø  增加‘直线’菜单项,建立类向导: Ø  对CXX ...

  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. 移动端rem,scale动态设置

    pt:物理像素(电容屏上像素块个数) px:逻辑像素.设备独立像素 高清屏:1px = 4pt 普通屏:1px = 1pt dpr:设备像素比:(某一方向上)物理像素/逻辑像素 通常设置1rem=屏幕 ...

  2. 【Oracle】wmsys.wm_concat函数字段值为空

    这个是因为字符集的问题,和空值是没关系的.其实已经取到了数据,可以验证一下返回的不是0,但是由于这个里面有个chr(0)字符,而且可能第一个字符就是chr(0),所以就显示得怪异的空现象.至于为何会出 ...

  3. 网络编程TCP协议-聊天室

    网络编程TCP协议-聊天室(客户端与服务端的交互); <span style="font-size:18px;">1.客户端发数据到服务端.</span> ...

  4. python读取EXCLE文件数据

    python读取EXCEL,利用 Google 搜索 Python Excel,点击第一条结果http://www.python-excel.org/ ,能够跨平台处理 Excel. 按照文档一步步去 ...

  5. Ural 1450 求最长路 SPFA

    题意就是求S点到T点的有向无环图中的最长路. 用SPFA可以解决. 一开始一直RE的原因 QAQ 竟然是在开Edge 邻接表的时候开小了 改了一下4Y #include <stdio.h> ...

  6. 一步一步重写 CodeIgniter 框架 (7) —— Controller执行时将 Model获得的数据传入View中,实现MVC

    1. 实现过程 1) 上一节讲述了 View 视图的加载过程,它是在 Loader 类中加载的,并通过 Include 语句进行包含.那么为了在 View 中传递变量,只需要在 include 语句所 ...

  7. android 从服务器上获取APK并下载安装

    简单的为新手做个分享.    网上有些资料,不过都是很零散,或是很乱的,有的人说看不懂.    一直有新手说 做到服务器更新APK时没有思路,这里做个简单的分享,希望有不同思路的可以讨论.     下 ...

  8. VMware Workstation 9.0 安装苹果Mac OS X10.9系统

    摘自:http://www.wuwenhui.cn/3133.html 一.安装所需要的软件: 1.VMware Workstation 9.0 点击下载 2.unlock-all-v110.zip  ...

  9. SpringMVC日期类型转换问题三大处理方法归纳

    方法一:实体类中加日期格式化注解 @DateTimeFormat(pattern = "yyyy-MM-dd") private Date receiveAppTime; 方法二: ...

  10. XLSTransformer生成excel文件简单演示样例

    项目结构图: 项目中所用到的jar,能够到http://www.findjar.com/index.x下载 ExcelUtil类源代码: package util; import java.io.IO ...