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 哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多 ...
随机推荐
- Swift编程语言学习2.1——基础运营商(在)
操作员正在检查,更改.归并值特殊符号或短语.例如,加+这两个数字相加(例如let i = 1 + 2). 算如更复杂的逻辑和操作的实施&&(例如if enteredDoorCode & ...
- Servlet中通过过滤器实现统一的手动编码(解决中文乱码)
1.web.xml片段: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...
- hdu2289Cup(神坑题,精度+二分,以半径二分不能过,以高度为二分就过了)
Problem Description The WHU ACM Team has a big cup, with which every member drinks water. Now, we kn ...
- HDU2527:Safe Or Unsafe(哈弗曼树)
Problem Description Javac++ 一天在看计算机的书籍的时候,看到了一个有趣的东西!每一串字符都可以被编码成一些数字来储存信息,但是不同的编码方式得到的储存空间是不一样的!并且当 ...
- 基于FPGA的DW8051移植(二)
基于上一篇博文继续,本来想换到oc8051,但是还是不甘心,弄了这么久还是没有弄出来,真是打击屎了. 上一篇说3f进入了operation code所以判断是代码错误,后来发现不可以这么判断. 因为地 ...
- Ubuntu服务器上SSH Server 的安装和设置
网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的方法测试后都不太理想,均不能实现远程登录到Ubuntu上,最后分析原因是都没有真正开启ssh-server服务.最终成功的方法如下: ...
- 【.Net基础拾遗】适配器模式(Adapter)与多态
今天晚上跟大家主要来讨论下适配器模式和多态,什么是适配器模式呢?先抛给大家一个问题:假设两个类Student和Teacher继承一个抽象基类Person,如何在不改动三类情况下实现多Student.T ...
- 关于 Oracle外键列上是否需要索引问题?
外键列上缺少索引会带来两个问题,限制并发性.影响性能.而这两个问题中的任意一个都可能会造成严重性能问题. 无论是Oracle的官方文档,还是在Tom的书中都说明了两种情况下可以忽略外键上的索引.其 ...
- Android Dialog详解
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- word2vec 中的数学原理具体解释(五)基于 Negative Sampling 的模型
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注. 因为 word2vec 的作者 Tomas ...