?

基于MFC的繪畫板系統的研究

2016-12-07 02:54李超
電腦與電信 2016年7期
關鍵詞:色板工具欄繪圖

李超

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

基于MFC的繪畫板系統的研究

李超

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

針對當前繪畫板軟件的使用比較復雜的問題,本文針對初學者設計了繪畫板系統來滿足使用者的需求。首先對系統的功能和界面進行了分析,對系統開發的軟硬件環境進行了描述;其次對系統的部分模塊進行了詳細的分析。本文對軟件開發初學者和一線教學工作者都具有積極的意義。

MFC;繪畫板;面向對象

1 前言

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

2 繪圖板系統分析

2.1 功能介紹

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

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

圖1 系統的功能結構

2.2 界面分析

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

界面介紹:

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

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

(3)色板:用戶調色;

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

2.3 系統開發及運行環境

(1)硬件環境

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

(2)軟件環境

操作系統:Windows 2000,Windows Xp或者更高;開發環境:VC++6.0。

3 系統實現

3.1 文字編輯功能模塊

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

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

其中,x是待編輯的文本在編輯區中的水平位置;y是對應的垂直位置;zifu是待編輯的內容。

存儲字體的信息采用一個結構體類型進行描述,在WINDOWS中,結構體名為TextMETRIC,獲得字體的具體信息通過以下函數:

BOOL GetTextMetrics(LPTEXTMETRIC sjzt)

其中,參數sjzt是用戶定義的結構體類型TEXTMETRIC的指針。在調用繪圖函數的過程中利用GetTextMetrics函數得到字體的結構體信息。

另外,為了接收用戶輸入的字符,當用戶按下非系統鍵時產生的消息,則會產生WM_CHAR消息,在消息結構體tagMSG的成員wParam則保存了用戶所按鍵的ASCII碼。將獲取的鍵的ASCII碼存入對象數組,最后調用OnDraw()函數對獲取的文字信息作為一個圖片繪制到編輯區中,具體代碼如下:

void CPaintView::OnFonts()

{

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

}

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

{

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

{

m_bFontSelect=true;

//CFont font;

CClientDC dc(this);

TEXTMETRIC tm;//創建TEXTMETRIC結構變量存儲字體信息

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);//添加到對象數組

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);//設定光標位置

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

Out_Fonts);//輸出文字

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

}

}

繪制文字函數的代碼:

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

{

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

CShape*pShape;

if(Draw_Style==DRAW_FONTS)

{

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

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

}

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

{

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

HideCaret(); //隱藏光標

}

3.2 調色板模塊

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

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

{

public:

CView*m_pView;

CColorPanel(CView*pView);

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

COLORREF clrButn;

...........

}

創建色板工具欄:

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

3.3 放大縮小功能設計

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

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);

//對選中的圖片進行放大操作

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);

/對選中的圖片進行縮小操作

4 結語

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

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

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

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

[4]孫永強,陸波,楊麗昆.Framework程序設計[M].北京:清華大學出版社,2001.

[5]郭中華,連億東,伍馮潔,等.基于嵌入式的人臉圖像采集顯示系統的制作[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

李超,男,河南信陽人,本科,講師,研究方向:計算機科學與技術。

猜你喜歡
色板工具欄繪圖
來自河流的你
“禾下乘涼圖”繪圖人
科思創為《勞爾顏色趨勢體驗2021+》提供聚碳酸酯流行色色板
“玩轉”西沃白板
攝影
垂涎三尺
人性的色板
人性的色板
設計一種帶工具欄和留言功能的記事本
輕松DIY:用好IE8瀏覽器中的自定義功能等
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合