• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于MFC的繪畫板系統(tǒng)的研究

      2016-12-07 02:54:27李超
      電腦與電信 2016年7期
      關(guān)鍵詞:色板工具欄字體

      李超

      (鶴壁市機(jī)電信息工程學(xué)校,河南 鶴壁 458030)

      基于MFC的繪畫板系統(tǒng)的研究

      李超

      (鶴壁市機(jī)電信息工程學(xué)校,河南 鶴壁 458030)

      針對當(dāng)前繪畫板軟件的使用比較復(fù)雜的問題,本文針對初學(xué)者設(shè)計了繪畫板系統(tǒng)來滿足使用者的需求。首先對系統(tǒng)的功能和界面進(jìn)行了分析,對系統(tǒng)開發(fā)的軟硬件環(huán)境進(jìn)行了描述;其次對系統(tǒng)的部分模塊進(jìn)行了詳細(xì)的分析。本文對軟件開發(fā)初學(xué)者和一線教學(xué)工作者都具有積極的意義。

      MFC;繪畫板;面向?qū)ο?/p>

      1 前言

      隨著信息技術(shù)的飛速發(fā)展,人們的工作和生活領(lǐng)域與信息技術(shù)的結(jié)合越來越緊密,計算機(jī)在很多領(lǐng)域上開始淘汰傳統(tǒng)的手工勞作方式,利用計算機(jī)進(jìn)行繪畫制圖已經(jīng)成為一種時尚。繪圖板工具的普及為人們打開了一扇新的藝術(shù)大門,輔助人們更好地發(fā)揮藝術(shù)才能。繪圖最常用的軟件有金山畫王、我行我素、Photoshop和Painter等。雖然這些繪圖軟件功能強(qiáng)大,但是操作復(fù)雜,對于只需要對圖片做簡單編輯或者繪制簡單圖形的用戶來說,不可能花費(fèi)大量的時間來通過學(xué)習(xí)完成對這些復(fù)雜軟件的操作。因此,根據(jù)實(shí)際情況,開發(fā)簡易繪畫板系統(tǒng),能夠滿足用戶的簡單需求。

      2 繪圖板系統(tǒng)分析

      2.1 功能介紹

      繪圖板系統(tǒng)的功能比較多,但結(jié)合當(dāng)前一般用戶的需求,主要有以下幾個功能:鉛筆、毛筆、縮放、噴槍、橡皮、畫刷、色板等。

      在繪制圖圖形時,主要利用鼠標(biāo)進(jìn)行操作,無論是畫線還是繪圖,采用先選中對應(yīng)的功能模塊,然后將鼠標(biāo)移至繪圖區(qū)域,按下鼠標(biāo)左鍵不放,同時按照所繪制圖形的軌跡移動鼠標(biāo)。色板是根據(jù)RGB三原色的原理,在系統(tǒng)的界面上進(jìn)行調(diào)色,得到相應(yīng)的顏色,并將其應(yīng)用在對應(yīng)的工具(畫筆、噴槍、繪圖及畫刷等)上,豐富圖形的色彩。其功能結(jié)構(gòu)如圖1所示:

      圖1 系統(tǒng)的功能結(jié)構(gòu)

      2.2 界面分析

      按照面向?qū)ο蟪绦蛟O(shè)計的思想,分析得出了系統(tǒng)所需的各種類,包括畫刷類、橢圓類、字體類、線形類、多邊形類、矩形類、直線類等,每一個類都存儲了用戶繪制圖形時所需存儲的信息。軟件的界面風(fēng)格力求簡潔、操作簡便、實(shí)用靈活的原則,每個功能模塊也就是主界面上的一個菜單項(xiàng)或者工具欄中的一項(xiàng)按鈕,這樣可以讓用戶感覺功能模塊比較清晰,使用起來比較方便。

      界面介紹:

      (1)縱向工具欄:用戶可以從中選擇繪圖工具;

      (2)橫向工具欄:用戶可以從中選擇選型,線寬,畫刷種類;

      (3)色板:用戶調(diào)色;

      (4)圖形繪制區(qū)域:用戶繪圖操作區(qū)。

      2.3 系統(tǒng)開發(fā)及運(yùn)行環(huán)境

      (1)硬件環(huán)境

      CPU:1.3GHZ或者更高;內(nèi)存:256MB以上;24位色彩分辨率及以上。

      (2)軟件環(huán)境

      操作系統(tǒng):Windows 2000,Windows Xp或者更高;開發(fā)環(huán)境:VC++6.0。

      3 系統(tǒng)實(shí)現(xiàn)

      3.1 文字編輯功能模塊

      顯示文本要使用CDC類的成員函數(shù)Wordedit,函數(shù)參數(shù)為:

      BOOLWordedit(int x,int y,const CString zifu)

      其中,x是待編輯的文本在編輯區(qū)中的水平位置;y是對應(yīng)的垂直位置;zifu是待編輯的內(nèi)容。

      存儲字體的信息采用一個結(jié)構(gòu)體類型進(jìn)行描述,在WINDOWS中,結(jié)構(gòu)體名為TextMETRIC,獲得字體的具體信息通過以下函數(shù):

      BOOL GetTextMetrics(LPTEXTMETRIC sjzt)

      其中,參數(shù)sjzt是用戶定義的結(jié)構(gòu)體類型TEXTMETRIC的指針。在調(diào)用繪圖函數(shù)的過程中利用GetTextMetrics函數(shù)得到字體的結(jié)構(gòu)體信息。

      另外,為了接收用戶輸入的字符,當(dāng)用戶按下非系統(tǒng)鍵時產(chǎn)生的消息,則會產(chǎn)生WM_CHAR消息,在消息結(jié)構(gòu)體tagMSG的成員wParam則保存了用戶所按鍵的ASCII碼。將獲取的鍵的ASCII碼存入對象數(shù)組,最后調(diào)用OnDraw()函數(shù)對獲取的文字信息作為一個圖片繪制到編輯區(qū)中,具體代碼如下:

      void CPaintView::OnFonts()

      {

      Draw_Style=DRAW_FONTS;國//用戶點(diǎn)擊了工具欄中的文字編輯按鈕

      }

      void CPaintView::OnChar(UINT nChar,UINT nRepCnt, UINT nFlags) //在畫板上寫字

      {

      if(Draw_Style==DRAW_FONTS)//文字編輯按鈕被選中

      {

      m_bFontSelect=true;

      //CFont font;

      CClientDC dc(this);

      TEXTMETRIC tm;//創(chuàng)建TEXTMETRIC結(jié)構(gòu)變量存儲字體信息

      dc.GetTextMetrics(&tm);//獲得字體信息

      Out_Fonts+=nChar;

      if(0x0d==nChar)//用戶敲擊回車鍵,0x0d為回車鍵的ASCII碼

      {

      CPaintDoc*pDoc=GetDocument(); CShape*pShape; pShape=new CFonts(m_ptFontDian, Out_Fonts);

      pDoc->AddShape(pShape);//添加到對象數(shù)組

      Out_Fonts.Empty();

      m_ptFontDian.y+=tm.tmHeight;

      }

      CSize sz=dc.GetTextExtent(Out_Fonts); CDian pt;

      pt.x=m_ptFontDian.x+sz.cx;

      pt.y=m_ptFontDian.y;

      SetCaretPos(pt);//設(shè)定光標(biāo)位置

      dc.TextOut(m_ptFontDian.x,m_ptFontDian.y,

      Out_Fonts);//輸出文字

      CScrollView::OnChar(nChar,nRepCnt,nFlags);

      }

      }

      繪制文字函數(shù)的代碼:

      void CPaintView::DrawFonts(CDian dian)//繪制文字

      {

      CPaintDoc*pDoc=GetDocument();//獲取存儲的對象信息

      CShape*pShape;

      if(Draw_Style==DRAW_FONTS)

      {

      SetCaretPos(dian);//選擇光標(biāo)位置

      m_ptFontDian=dian; ShowCaret(); //顯示光標(biāo)

      }

      if(true==m_bFontSelect && Draw_Style! = DRAW_FONTS)

      {

      pShape=new CFonts(m_ptFontDian,Out_Fonts); pDoc->AddShape(pShape); Out_Fonts="";

      HideCaret(); //隱藏光標(biāo)

      }

      3.2 調(diào)色板模塊

      作為調(diào)色的控件懸浮于用戶工作區(qū),通過創(chuàng)建CColor-Panel的對象m_pColorPanel,然后調(diào)用CcolorPanel的Create ()函數(shù)創(chuàng)建工具欄,用戶在色板區(qū)域通過滑動紅、綠、藍(lán)下的滑塊,根據(jù)需要調(diào)整畫筆的RGB,將調(diào)好顏色的畫筆載入設(shè)備描述環(huán)境,隨后便能夠用該顏色的畫筆進(jìn)行繪圖了。

      class CColorPanel:public Cdialog//色板繼承類

      {

      public:

      CView*m_pView;

      CColorPanel(CView*pView);

      BOOL Create();//創(chuàng)建色板工具欄

      COLORREF clrButn;

      ...........

      }

      創(chuàng)建色板工具欄:

      m_pColorPanel->Create();//其 中 m_pColorPanel 為CcolorPanel類的對象

      3.3 放大縮小功能設(shè)計

      在VC6.0利用MFC進(jìn)行系統(tǒng)設(shè)計,其中設(shè)備環(huán)境CDC中有兩個成員函數(shù)StretchBlt()和BitBlt(),可以通過改變函數(shù)的參數(shù)值來實(shí)現(xiàn)當(dāng)前視圖的縮放范圍,進(jìn)而對位圖進(jìn)行放大或縮小顯示,其核心代碼如下所示:

      CDC*tpzj=GetDC(); CRect jxkh;

      GetClientRect(&jxkh);

      if(Draw_Style==HTQYIN)

      tpzj->StretchBlt(- dian.x/len,- dian.y/len,jxkh.right*len, jxkh.bottom*len,tpzj,0,0,jxkh.right,jxkh.bottom,SRCCOPY);

      //對選中的圖片進(jìn)行放大操作

      if(Draw_Style==HTQYOUT)

      tpzj->StretchBlt(- dian.x/len,- dian.y/len,jxkh.right/len, jxkh.bottom/len,tpzj,0,0,jxkh.right,jxkh.bottom,SRCCOPY);

      /對選中的圖片進(jìn)行縮小操作

      4 結(jié)語

      本文針對簡易的繪圖板系統(tǒng)進(jìn)行研究,當(dāng)前社會上畫圖工具種類比較多,但是大部分使用起來需要專門的學(xué)習(xí)或培訓(xùn),極大地限制了使用者的積極性。簡易的繪圖板系統(tǒng)無需專門的培訓(xùn)即可進(jìn)行操作。本文由于篇幅所限,只對關(guān)鍵部分的實(shí)現(xiàn)進(jìn)行了分析,希望為軟件開發(fā)初學(xué)者和教學(xué)工作者提供一些參考。

      [1]David J.Kruglinski etc(希望圖書創(chuàng)作室).Visual C++6.0技術(shù)內(nèi)幕[M].北京:北京希望電子出版社,1999.

      [2]李烜,周家紀(jì).設(shè)備場景(DC)在Windows GD I中的應(yīng)用[J].物探化探計算技術(shù),1998,20(1):76.

      [3]Eugene Olafsen,Kenn Scribner,K.DavidWhite,et al.MFC Visual C++6編程技術(shù)內(nèi)幕(王建華,陳一飛,張煥生等譯)[M].北京:機(jī)械工業(yè)出版社,2000.

      [4]孫永強(qiáng),陸波,楊麗昆.Framework程序設(shè)計[M].北京:清華大學(xué)出版社,2001.

      [5]郭中華,連億東,伍馮潔,等.基于嵌入式的人臉圖像采集顯示系統(tǒng)的制作[J].電腦與電信,2015(7):32-34.

      Research on the Drawing Board System Based on MFC

      Li Chao
      (Hebi Mechanical and Electrical Information Engineering School,Hebi 458030,Henan)

      In view of the complex problems in the current drawing board software,this paper designs a drawing board system for beginners.At first,the function and the interface of the system are analyzed,and the software and hardware environment of the system is described.Then,some modules of the system are analyzed in detail.This article has the positive significance to the software development beginners and the first teaching staff.

      MFC;drawing board;object-oriented

      TP391.41

      A

      1008-6609(2016)07-0092-03

      李超,男,河南信陽人,本科,講師,研究方向:計算機(jī)科學(xué)與技術(shù)。

      猜你喜歡
      色板工具欄字體
      科思創(chuàng)為《勞爾顏色趨勢體驗(yàn)2021+》提供聚碳酸酯流行色色板
      上海建材(2021年1期)2021-11-22 08:01:44
      “玩轉(zhuǎn)”西沃白板
      攝影
      江淮法治(2020年3期)2020-05-08 08:53:26
      字體的產(chǎn)生
      貝貝和五顏六色
      人性的色板
      愛你(2015年4期)2015-11-15 04:09:37
      組合字體
      設(shè)計一種帶工具欄和留言功能的記事本
      字體安裝步步通
      移動一族(2009年3期)2009-05-12 03:14:30
      以最快的速度為填空題留空
      移動一族(2009年3期)2009-05-12 03:14:30
      寿光市| 北流市| 河源市| 普兰店市| 太谷县| 乐平市| 佛山市| 青铜峡市| 易门县| 江门市| 宁国市| 邵东县| 卢龙县| 万年县| 华容县| 郸城县| 简阳市| 广宁县| 荥经县| 汉寿县| 横峰县| 教育| 化隆| 蓬溪县| 安义县| 富平县| 连平县| 孝感市| 黎川县| 马边| 利辛县| 玛沁县| 屏南县| 台北县| 武夷山市| 鹤山市| 上饶市| 永丰县| 堆龙德庆县| 稻城县| 余庆县|