1.1.5-学习Opencv与MFC混合编程之---画图工具 输入文字和填充图像 修改光标

简介: 源代码:http://download.csdn.net/detail/nuptboyzhb/3961696 输入文字 l 对话框 1.    插入,资源,选择对话框资源 2.    编辑对话框如下: 设置每一个控件的属性。

源代码: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月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
328 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
2月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
49 4
|
2月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
3月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
3月前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
108 1
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
OpenCV与AI深度学习之常用AI名词解释学习
AGI:Artificial General Intelligence (通用人工智能):是指具备与人类同等或超越人类的智能,能够表现出正常人类所具有的所有智能行为。又被称为强人工智能。
130 2
|
4月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
4月前
|
计算机视觉 Python
opencv 处理图像去噪的几种方法学习
OpenCV 提供了多种图像去噪的方法,以下是一些常见的去噪技术以及相应的 Python 代码示例: 均值滤波:使用像素邻域的灰度均值代替该像素的值。
64 0
|
5月前
|
算法 计算机视觉
【Qt&OpenCV 图像的感兴趣区域ROI】
【Qt&OpenCV 图像的感兴趣区域ROI】
165 1
|
5月前
|
运维 算法 计算机视觉
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
78 1