1.1.5-学习Opencv与MFC混合编程之---画图工具 输入文字和填充图像 修改光标
源代码:http://download.csdn.net/detail/nuptboyzhb/3961696
输入文字
l 对话框
1. 插入,资源,选择对话框资源
2. 编辑对话框如下:
设置每一个控件的属性。
3. 双击对话框,建立对话框的类,命名为:TexTSetDlg
4. 给对话框类增加公有成员变量如下:
int m_colorR;
int m_colorG;
int m_colorB;
double dlg_hscale;
double dlg_vscale;
double dlg_shear;
int dlg_thick;
CString str_text;
5. 在对话框的构造函数中,初始化成员变量。
6. 在数据交换函数中,将控件上输入的值写入到成员变量中。同时检查输入的数字是否合法。
voidTexTSetDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(TexTSetDlg)
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_FONT_WIDTH,dlg_hscale);
DDV_MinMaxDouble(pDX,dlg_hscale, 0.1, 5);
DDX_Text(pDX,IDC_FONT_HIGHT,dlg_vscale);
DDV_MinMaxDouble(pDX,dlg_vscale, 0.1, 5);
DDX_Text(pDX,IDC_FONT_SHEAR,dlg_shear);
DDV_MinMaxDouble(pDX,dlg_shear, 0, 1.5);
DDX_Text(pDX,IDC_FONT_THICK,dlg_thick);
DDV_MinMaxInt(pDX,dlg_thick, 1, 20);
//--------------------------------------
DDX_Text(pDX,IDC_TEXT,str_text);
//NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
7. 为‘确认’按键添加消息响应函数。编辑如下:
void TexTSetDlg::OnOK()
{
//TODO: Add extra validation here
UpdateData(TRUE); // 把控件上的数据写入成员变量
CDialog::OnOK();
}
l 对话框的使用
1. 添加‘文字’菜单项,并添加相应的消息处理函数。在消息处理函数中,设置画图标志;
my_draw_flag=6;
2. 编辑OnMouseMove消息处理函数。
2.1. 添加变量
TexTSetDlgdlg;
CvFont font;
double hscale;
double vscale;
double shear=0;
int fontthickness=1;
CStringtext;
2.2. 编写case 6:的程序如下:
if (dlg.DoModal()!= IDOK)
{
OnLButtonUpRunFlag=1;
return;
}
//以下进行参数传递
hscale=dlg.dlg_vscale;
vscale=dlg.dlg_vscale;
shear=dlg.dlg_shear;
fontthickness=dlg.dlg_thick;
text=dlg.str_text;
colorB=dlg.m_colorB;
colorG=dlg.m_colorG;
colorR=dlg.m_colorR;
deletedlg;//删除对话框
cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX,hscale,vscale,
shear,fontthickness);
cvFlip(src);
cvPutText(src, text,iner_point, &font, cvScalar(colorB,colorG,colorR));
cvFlip(src);
OnLButtonUpRunFlag=1;
workImg=cvCloneImage(src);//拷贝到工作区
Invalidate();//重绘
break;
Ø 增补:画圆、矩形、椭圆时,可以画填充图形。
1. 在LineParameter对话框资源上,添加单选按钮。
设置相应的属性。
2. 为该单选按钮添加事件处理函数OnMyDrawFull。
3. 增加BOOL型成员变量full,并在构造函数中初始化为FALSE。
4. 在单选按钮事件处理函数中将full设置位TRUE
Ø CXXXXView中,各个菜单项的修改。
1. 在CXXXXView类中增加BOOL类型成员变量m_FullOrNot,并在构造函数中进行初始化为FALSE。
2. 在矩形,椭圆,圆菜菜单项的消息处理函数上添加对话框传递语句: m_FullOrNot=dlg.full;
3. 在OnMouseMove消息处理函数中,修改thickness赋值语句,将其修改为:
if(m_FullOrNot==TRUE)
{
thickness=-1;//填充
}
else
{
thickness=m_LineWidth;
}
实时修改鼠标绘图是的光标
1. 插入,资源,选择光标资源,新建
2. 此时资源框图如下:
3. 用右边的画图工具画出如下光标图形
4. 在CXXXXView类得OnMouseMove函数中添加下列语句
SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR1)); // 加载光标资源
注意添加的位置
1.1.5-学习Opencv与MFC混合编程之---画图工具 输入文字和填充图像 修改光标的更多相关文章
- 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.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形
源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961685 画图工具 1. 画直线 Ø 增加‘直线’菜单项,建立类向导: Ø 对CXX ...
- 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 哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多 ...
随机推荐
- CursorAdapter说明
参考:http://www.bubuko.com/infodetail-734550.html和http://blog.csdn.net/yuzhiboyi/article/details/76548 ...
- .NET Core & ASP.NET Core 1.0
.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布 众所周知,Red Hat和微软正在努力使.NET Core成为Red Hat企业版Linux (RHEL) ...
- 数据库中操作XML(openXML)
最近公司项目需要在数据库中操作XML,因此系统的学习了一下 一.openxml的格式 OPENXML( idoc int [ in] , XPathnvarchar [ in ] , [ flags ...
- 基于visual Studio2013解决算法导论之044最短路径
题目 最短路径 解决代码及点评 // 26最短路径dijstra.cpp : 定义控制台应用程序的入口点. // #include <iostream> using namespa ...
- 《UNIX环境高级编程》笔记--sync、fsync和fdatasync函数
传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘 I/O都通过缓冲进行.当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列 ...
- 【Linux】Linux 自己主动挂载NTFS格式移动硬盘
1.首先下载ntfs-3g http://www.tuxera.com/community/ntfs-3g-download/ 2.解压 $tar zxvf ntfs-3g_ntfsprogs-201 ...
- ONOS系统架构演进,实现高可用性解决方案
上一篇文章<ONOS高可用性和可扩展性实现初探>讲到了ONOS系统架构在高可用.可扩展方面技术概况,提到了系统在分布式集群中怎样保证数据的一致性.在数据终于一致性方面,ONOS採用了Gos ...
- UVALive 3989 Ladies' Choice
经典的稳定婚姻匹配问题 UVALive - 3989 Ladies' Choice Time Limit: 6000MS Memory Limit: Unknown 64bit IO Format: ...
- UNIX环境高级编程——TCP/IP网络编程
常用网络信息检索函数 gethostname() getppername() getsockname() gethostbyname() gethostbyaddr() getprotobyname( ...
- eclipse java快捷模板 快捷键大全
建议没事研究研究自己吃饭的工具,俗话说工欲善其事必先利其器嘛. 首先,快捷键这种东西大家都会知道点,但是很少人重视javaEditorTemplate这块.先介绍下Template java编辑模板 ...