羅倩
(青島理工大學琴島學院 計算機工程系,山東 青島 266106)
GDI 是位于應用程序與不同硬件之間的中間層,這種結構讓程序員從直接處理不同硬件的工作中解放出來,把硬件間的差異交給了GDI 處理。GDI 通過將應用程序與不同輸出設備特性相隔離,使Windows 應用程序能夠毫無障礙地在Windows 支持的任何圖形輸出設備上運行。
Windows 系統是用來給應用程序提供設備獨立性的工具,它是windows 系統為了處理輸出設備而使用的一種內部數據結構,設備環境是windos 程序,驅動程序,和輸出設備(如打印機,繪圖儀)之間的紐帶,GDI 是一組C++類,它在驅動程序的協助下把數據描繪在硬件上,它位于應用程序與硬件之間,把數據從一方傳到另一方。
GDI+是GDI 的下一個版本,它進行了很好的改進,并且易用性更好。GDI 的一個好處就是你不必知道任何關于數據怎樣在設備上渲染的細節,GDI+更好的實現了這個優點,也就是說,GDI 是一個中低層API,你還可能要知道設備,而GDI+是一個高層的API,你不必知道設備。例如你如果要設置某個控件的前景和背景色,只需設置BackColor 和ForeColor 屬性。
GDI+與GDI 相比,增加了下列新的特性:漸變畫刷、樣條曲線、獨立的路徑對象、矩陣和矩陣變換、Alpha 通道合成運算和多圖片格式的支持,除了上述新特性外,GDI+還將支持重新著色、色彩修正、消除走樣、元數據以及Graphics 容器等特性。
而.NET 可以很好的支持GDI+編程,可以充分利用其優越性,本文在設計與實現簡易畫圖程序時,采用GDI+編程技術。
a.對整個界面進行布局。b.實現繪圖工具的功能。c.實現顏色拾取的功能。d.實現菜單功能。e.實現手動調節畫布大小的功能。f.測試。
目前,常用的系統體系結構有兩種:C/S 與B/S。采用B/S 結構,客戶端只能完成瀏覽、查詢、數據輸入等簡單功能,絕大部分工作由服務器承擔,這使得服務器的負擔很重。采用C/S 結構時,客戶端和服務器端都能夠處理任務,這雖然對客戶機的要求較高,但因此可以減輕服務器的壓力。
畫圖程序對計算機的性能要求比較高,占用大量的內存,且要求穩定性好。本文中的系統采用C/S 結構,這樣可以充分利用客戶端的功能,為服務器減輕負擔。
畫圖程序,主要包括四大模塊:文件功能(打開、關閉、保存等)、工具箱(線條、鉛筆、矩形、空心園、實心圓、橡皮擦等)、調色板(各種顏色)、圖像(清除圖像、圖像屬性),軟件啟動時,為一張空白畫布,我們可以直接在畫布上繪畫,也可以通過菜單中的“打開”,導入一張圖片,然后我們就可以在這張圖片上進行繪制。簡單結構,如圖1 所示:

圖1 畫圖程序模塊圖

圖2 界面設計圖
系統界面遵循簡潔、緊湊、美觀和易于使用的原則,主界面分成了四個區:菜單區(上側)、工具箱區(左上側)、調色板區(左下側)、狀態欄(下側)、中心區(中間),如圖2 所示:
C#語言是微軟公司提供一門編程語言,方便易用,且功能強大,適合各類項目的開發,對于編寫WinForm 程序,是一種不錯的選擇。本文在開發畫圖程序時,采用了C#語言。因為使用C#語言,可以通過引入命名空間,調用強大的GDI+的功能,從而可以繪制出漂亮、功能強大穩定的圖像。
3.2.1 畫板、畫筆、畫刷介紹
要實現畫圖功能,首要任務是建立畫板,Graphics 主要是用來建立畫板對象,本文將picture 控件作為畫板,創建畫板的語法為:
Graphics g=picture1.CreateGraphics();//創建畫板
g.Clear(Color.Red);//將畫板染成為紅色
g.Dispose();//把畫板對象從內存中清除掉
建立畫板后,下一步的任務就是創建畫筆,Pen 主要是用來建立畫筆對象,創建畫筆的語法如下:
Pen p=new Pen(Color.Blue,2);//定義了一個藍色,像素為2 的畫筆
有了畫筆,下一步就是定制畫刷,Brush 對象是畫筆對象,用來繪制實心、漸層的圖形,使得圖案顯得比較有質感。最簡單的畫筆僅指定了區域用純色來填充。這種畫筆由System.Drawing.Brush類的實例表示,該實例可以如下構造:Brush b=SolidBrush(Color.Orange);3.2.2 清除圖像
清除圖像的方法是,把整個畫布顏色填充為白色,部分代碼如下:

3.2.3 畫布大小調整
放置一個picture1 控件,將它固定在主畫板的右下角,然后改變鼠標進入時的Cursor 為箭頭形狀,設置鼠標按下移動時的事件,讓該picturebox1 跟隨鼠標移動。當鼠標松開時,將主畫板的右下角坐標調整為picturebox1 的坐標,部分代碼:


圖3 畫圖程序主界面
程序啟動后,進入程序的主運行界面,如圖3 所示。利用左側工具箱中的工具,以及顏色工具箱,可以白色畫板區域中,繪制線條、矩形、橢圓,并可以改變線條的顏色,給矩形和橢圓填充顏色;當繪制圖形,出現錯誤時,使用工具箱中的橡皮擦,除掉錯誤的地方,以便重新繪制。另外,程序也提供了對圖片像素的大小的改變,如將圖片的大小從1024*768,改變成800*600,方便使用。
GDI+是WinXP 操作系統的一個子集,具有十分強大的圖形接口,通過它可以繪制出功能強大的圖形,并可以對圖形進行各種處理,以滿足圖像處理的需要。使用GDI+可以很方便的開發出一個畫圖軟件,例如操作系統的畫板。本文使用GDI+技術,很好的實現了一個簡易的畫圖程序,簡單實用。
[1]王東明.Visual C#.NET 程序設計與應用開發.清華大學出版社,2008.5
[2].程不功.ASP.NET2.0 動態網站開發教程.清華大學出版社,2006.4
[3].邵良杉.ASP.NET3.5(C#)實踐教程.清華大學出版社,2009.5