国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于GDI+的簡(jiǎn)易畫圖程序設(shè)計(jì)與實(shí)現(xiàn)

2010-09-07 00:50羅倩
關(guān)鍵詞:工具箱畫布畫板

羅倩

(青島理工大學(xué)琴島學(xué)院 計(jì)算機(jī)工程系,山東 青島 266106)

1 相關(guān)技術(shù)介紹

1.1 GDI 技術(shù)

GDI 是位于應(yīng)用程序與不同硬件之間的中間層,這種結(jié)構(gòu)讓程序員從直接處理不同硬件的工作中解放出來(lái),把硬件間的差異交給了GDI 處理。GDI 通過(guò)將應(yīng)用程序與不同輸出設(shè)備特性相隔離,使Windows 應(yīng)用程序能夠毫無(wú)障礙地在Windows 支持的任何圖形輸出設(shè)備上運(yùn)行。

Windows 系統(tǒng)是用來(lái)給應(yīng)用程序提供設(shè)備獨(dú)立性的工具,它是windows 系統(tǒng)為了處理輸出設(shè)備而使用的一種內(nèi)部數(shù)據(jù)結(jié)構(gòu),設(shè)備環(huán)境是windos 程序,驅(qū)動(dòng)程序,和輸出設(shè)備(如打印機(jī),繪圖儀)之間的紐帶,GDI 是一組C++類,它在驅(qū)動(dòng)程序的協(xié)助下把數(shù)據(jù)描繪在硬件上,它位于應(yīng)用程序與硬件之間,把數(shù)據(jù)從一方傳到另一方。

1.2 GDI+技術(shù)

GDI+是GDI 的下一個(gè)版本,它進(jìn)行了很好的改進(jìn),并且易用性更好。GDI 的一個(gè)好處就是你不必知道任何關(guān)于數(shù)據(jù)怎樣在設(shè)備上渲染的細(xì)節(jié),GDI+更好的實(shí)現(xiàn)了這個(gè)優(yōu)點(diǎn),也就是說(shuō),GDI 是一個(gè)中低層API,你還可能要知道設(shè)備,而GDI+是一個(gè)高層的API,你不必知道設(shè)備。例如你如果要設(shè)置某個(gè)控件的前景和背景色,只需設(shè)置BackColor 和ForeColor 屬性。

1.3 本文采用的技術(shù)

GDI+與GDI 相比,增加了下列新的特性:漸變畫刷、樣條曲線、獨(dú)立的路徑對(duì)象、矩陣和矩陣變換、Alpha 通道合成運(yùn)算和多圖片格式的支持,除了上述新特性外,GDI+還將支持重新著色、色彩修正、消除走樣、元數(shù)據(jù)以及Graphics 容器等特性。

而.NET 可以很好的支持GDI+編程,可以充分利用其優(yōu)越性,本文在設(shè)計(jì)與實(shí)現(xiàn)簡(jiǎn)易畫圖程序時(shí),采用GDI+編程技術(shù)。

2 系統(tǒng)的設(shè)計(jì)

2.1 系統(tǒng)總體設(shè)計(jì)方案

a.對(duì)整個(gè)界面進(jìn)行布局。b.實(shí)現(xiàn)繪圖工具的功能。c.實(shí)現(xiàn)顏色拾取的功能。d.實(shí)現(xiàn)菜單功能。e.實(shí)現(xiàn)手動(dòng)調(diào)節(jié)畫布大小的功能。f.測(cè)試。

2.2 系統(tǒng)結(jié)構(gòu)選擇

目前,常用的系統(tǒng)體系結(jié)構(gòu)有兩種:C/S 與B/S。采用B/S 結(jié)構(gòu),客戶端只能完成瀏覽、查詢、數(shù)據(jù)輸入等簡(jiǎn)單功能,絕大部分工作由服務(wù)器承擔(dān),這使得服務(wù)器的負(fù)擔(dān)很重。采用C/S 結(jié)構(gòu)時(shí),客戶端和服務(wù)器端都能夠處理任務(wù),這雖然對(duì)客戶機(jī)的要求較高,但因此可以減輕服務(wù)器的壓力。

畫圖程序?qū)τ?jì)算機(jī)的性能要求比較高,占用大量的內(nèi)存,且要求穩(wěn)定性好。本文中的系統(tǒng)采用C/S 結(jié)構(gòu),這樣可以充分利用客戶端的功能,為服務(wù)器減輕負(fù)擔(dān)。

2.3 系統(tǒng)模塊設(shè)計(jì)

畫圖程序,主要包括四大模塊:文件功能(打開(kāi)、關(guān)閉、保存等)、工具箱(線條、鉛筆、矩形、空心園、實(shí)心圓、橡皮擦等)、調(diào)色板(各種顏色)、圖像(清除圖像、圖像屬性),軟件啟動(dòng)時(shí),為一張空白畫布,我們可以直接在畫布上繪畫,也可以通過(guò)菜單中的“打開(kāi)”,導(dǎo)入一張圖片,然后我們就可以在這張圖片上進(jìn)行繪制。簡(jiǎn)單結(jié)構(gòu),如圖1 所示:

圖1 畫圖程序模塊圖

圖2 界面設(shè)計(jì)圖

2.4 系統(tǒng)界面設(shè)計(jì)

系統(tǒng)界面遵循簡(jiǎn)潔、緊湊、美觀和易于使用的原則,主界面分成了四個(gè)區(qū):菜單區(qū)(上側(cè))、工具箱區(qū)(左上側(cè))、調(diào)色板區(qū)(左下側(cè))、狀態(tài)欄(下側(cè))、中心區(qū)(中間),如圖2 所示:

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

3.1 編程語(yǔ)言的選擇

C#語(yǔ)言是微軟公司提供一門編程語(yǔ)言,方便易用,且功能強(qiáng)大,適合各類項(xiàng)目的開(kāi)發(fā),對(duì)于編寫WinForm 程序,是一種不錯(cuò)的選擇。本文在開(kāi)發(fā)畫圖程序時(shí),采用了C#語(yǔ)言。因?yàn)槭褂肅#語(yǔ)言,可以通過(guò)引入命名空間,調(diào)用強(qiáng)大的GDI+的功能,從而可以繪制出漂亮、功能強(qiáng)大穩(wěn)定的圖像。

3.2 關(guān)鍵技術(shù)與代碼分析

3.2.1 畫板、畫筆、畫刷介紹

要實(shí)現(xiàn)畫圖功能,首要任務(wù)是建立畫板,Graphics 主要是用來(lái)建立畫板對(duì)象,本文將picture 控件作為畫板,創(chuàng)建畫板的語(yǔ)法為:

Graphics g=picture1.CreateGraphics();//創(chuàng)建畫板

g.Clear(Color.Red);//將畫板染成為紅色

g.Dispose();//把畫板對(duì)象從內(nèi)存中清除掉

建立畫板后,下一步的任務(wù)就是創(chuàng)建畫筆,Pen 主要是用來(lái)建立畫筆對(duì)象,創(chuàng)建畫筆的語(yǔ)法如下:

Pen p=new Pen(Color.Blue,2);//定義了一個(gè)藍(lán)色,像素為2 的畫筆

有了畫筆,下一步就是定制畫刷,Brush 對(duì)象是畫筆對(duì)象,用來(lái)繪制實(shí)心、漸層的圖形,使得圖案顯得比較有質(zhì)感。最簡(jiǎn)單的畫筆僅指定了區(qū)域用純色來(lái)填充。這種畫筆由System.Drawing.Brush類的實(shí)例表示,該實(shí)例可以如下構(gòu)造:Brush b=SolidBrush(Color.Orange);3.2.2 清除圖像

清除圖像的方法是,把整個(gè)畫布顏色填充為白色,部分代碼如下:

3.2.3 畫布大小調(diào)整

放置一個(gè)picture1 控件,將它固定在主畫板的右下角,然后改變鼠標(biāo)進(jìn)入時(shí)的Cursor 為箭頭形狀,設(shè)置鼠標(biāo)按下移動(dòng)時(shí)的事件,讓該picturebox1 跟隨鼠標(biāo)移動(dòng)。當(dāng)鼠標(biāo)松開(kāi)時(shí),將主畫板的右下角坐標(biāo)調(diào)整為picturebox1 的坐標(biāo),部分代碼:

3.3 運(yùn)行界面分析

圖3 畫圖程序主界面

程序啟動(dòng)后,進(jìn)入程序的主運(yùn)行界面,如圖3 所示。利用左側(cè)工具箱中的工具,以及顏色工具箱,可以白色畫板區(qū)域中,繪制線條、矩形、橢圓,并可以改變線條的顏色,給矩形和橢圓填充顏色;當(dāng)繪制圖形,出現(xiàn)錯(cuò)誤時(shí),使用工具箱中的橡皮擦,除掉錯(cuò)誤的地方,以便重新繪制。另外,程序也提供了對(duì)圖片像素的大小的改變,如將圖片的大小從1024*768,改變成800*600,方便使用。

4 結(jié)束語(yǔ)

GDI+是WinXP 操作系統(tǒng)的一個(gè)子集,具有十分強(qiáng)大的圖形接口,通過(guò)它可以繪制出功能強(qiáng)大的圖形,并可以對(duì)圖形進(jìn)行各種處理,以滿足圖像處理的需要。使用GDI+可以很方便的開(kāi)發(fā)出一個(gè)畫圖軟件,例如操作系統(tǒng)的畫板。本文使用GDI+技術(shù),很好的實(shí)現(xiàn)了一個(gè)簡(jiǎn)易的畫圖程序,簡(jiǎn)單實(shí)用。

[1]王東明.Visual C#.NET 程序設(shè)計(jì)與應(yīng)用開(kāi)發(fā).清華大學(xué)出版社,2008.5

[2].程不功.ASP.NET2.0 動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)教程.清華大學(xué)出版社,2006.4

[3].邵良杉.ASP.NET3.5(C#)實(shí)踐教程.清華大學(xué)出版社,2009.5

猜你喜歡
工具箱畫布畫板
為什么要在畫布上割一刀?
讓鮮花在畫布上盛開(kāi)
基于MATLAB優(yōu)化工具箱優(yōu)化西洋參總皂苷提取工藝
Matlab曲線擬合工具箱在地基沉降預(yù)測(cè)模型中的應(yīng)用
大師的畫布
搜狗分號(hào)工具箱 輸入更便捷
爸爸的工具箱