<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    1.1.5-學習Opencv與MFC混合編程之---畫圖工具 輸入文字和填充圖像 修改光標

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    源代碼: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));  // 加載光標資源

    注意添加的位置

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全