程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .NET3.5 GDI+圖形操作1

.NET3.5 GDI+圖形操作1

編輯:關於.NET

前言: 本文章轉載自本人剛剛買的《ASP.NET 3.5從入門到精通》這本書,此書介紹在 http://www.china-pub.com/44991 ,本文章95%與此書的內容完全一樣,另5%是我改正一些 失誤以後加上去的,該書原示例代碼只能運行在IE核心的浏覽器上,非IE核心浏覽器上運行 會出現些顯示問題,本人更改了其中的一些代碼。本文章經歷昨晚本人五個小時的手打而成 (且還未打完,下班回去繼續打,想不到我的打字速度退化得這麼快,郁悶!!!),俗話 說:好記性不如爛筆頭,把書的內容手打出來,對手,對腦,都有好處!!!

第10章 圖形操作

圖形化界面是Windows操作系統最重要的特性之一,微軟以此迅速打敗對手,贏得了用戶 的認可。計算機圖形學一直是計算機科學體系中的重要內容,在Windows編程史上,圖形操作 也一直是核心開發技術之一。本章將介紹如何在ASP.NET的Web應用程序中GDI+繪圖。

10.1 圖形基礎

10.1.1 GDI+介紹

讀者可能聽說過Windows GDI(Graphics Device Interface,圖形裝置界面),這是 Windows操作系統的一個圖形包,用於支持Windows操作系統中的圖形界面,它也幫助開發人 員在不考慮特定設備細節的情形下在計算機上進行繪圖操作。比如就圖形輸出來說,開發人 員在繪圖時根本不用考慮是在屏幕上繪制還是在打印機上繪制,只需要指明輸出設備即可讓 GDI自己解決這些細節問題。

隨著開發技術的進步,GDI從某種意義上已經不能滿足需求,於是微軟把GDI進一步封裝抽 象,形成新的GDI+,並在性能和功能上進一步完善。GDI+構成了Windows XP操作系統及其後 續版本的子系統的應用程序編程接口(API)。GDI+負責在屏幕和打印機上顯示信息,它是 GDI的改進,同時也是.NET框架結構的重要組成部分。和GDI一樣,它提供了對二維圖形圖像 和文字排版處理的支持,通過GDI+能夠創建與設備無關的應用程序。使用GDI+可以創建圖形 、繪制文本以及將圖形圖像作為對象來操作,旨在提高性能和易用性。

與GDI相比,GDI+提供了一些新特性:Alpha混合技術、反鋸齒處理技術、漸變色和紋理填 充、寬線條、基本幾何曲線樣式、可縮放區域、浮點數坐標、嵌入畫筆、高質量過濾和縮放 、多種線條樣式和端點選項等。

當然,本書並不專門講解圖形編程,限於篇幅,本章將針對通用操作進行講述。

10.1.1 GDI+基礎

在學習.NET GDI+圖形操作以前,先將幾個基礎概念回顧一下。

1.坐標系

GDI+在坐標系中繪制直線、矩形和其他形狀,默認坐標系的原點是左上角,並且X軸指向 右邊,Y軸指向下邊。默認坐標系的度量單位是像素,如圖所示。

2.像素

計算機監視器是在一個點的矩形數組上創建其顯示,這些點被稱為圖片元素或像素。各台 監視器屏幕上顯示的像素數量都是不同的,並且用戶通常可以在一定程序上配置單獨一台監 視器上顯示的像素數量。比如通常所說的分辨率1024*768就是指X軸上有1024個像素、Y軸上 有768個像素,所以坐標實際上是建立在像素點陣上的。下圖表示了3個點及其坐標。

從這個意義上說,如何表示一條直線呢?下圖演示了在確定兩個點的情況下,如何在計算 機點陣中表示一條直線。

由此可見,直線並非上那麼直,只不過在分辨率很高的情況下肉眼無法分辨而已。當然, 這個計算過程很復雜,是計算機圖形學方面的知識,此處不再贅述。

3.位圖是位的數組,它指定了像素矩陣中各像素的顏色,專用於單個像素的位數,決定了可 分配到該像素的顏色數。例如,如果用4位來呈現每個像素,那麼一個給定的像素就可以分配 到16(24=16)種顏色中的一種。簡單來說,位數越多,表現出來的圖形顏色越 豐富、逼真。

存儲位圖的磁盤文件通常包含一個或多個信息塊,信息塊中存儲了如每像素位數、每行的 像素數以及數組中的行數等信息。不同格式的圖形文件會采用不同的存儲標准,一般會以不 同的擴展名標識。

GDI+

◇BMP

BMP是Windows使用的一種標准格式,用於存儲設備無關和應用程序無關的圖像。一個給定 BMP文件的每像素位數值(1,4,8,16,24,32或64)在文件頭中指定。每像素24位的BMP文件是 通用的。BMP文件通常是不壓縮的,因此不太適合通過Internet傳輸。

◇可交換圖像文件格式(GIF)

GIF是一種用於在網頁中顯示圖像的通用格式。GIF文件適用於畫線、有純色塊的圖片和在 顏色之間有清晰邊界的圖片。GIF文件是壓縮的,但是壓縮過程中沒有信息丟失,解壓縮的圖 像與原始圖像完全一樣。GIF文件中的一種顏色可以被指定為透明,這樣,圖像將具有顯示它 的任何網頁的背景色。在單個文件中存儲一系列GIF圖像可以形成一個動畫GIF。GIF文件每像 素最多能存儲8位,所以它們只限於使用256種顏色

◇聯合攝影專家組(JPEG)

JPEG是一種適應於自然景觀(如掃描的照片)的壓縮方案。一些信息會在壓縮過程中丟失 ,但這些丟失人眼是察覺不到的。JPEG文件每像素存儲24位,因此它們8能夠顯示超過1600萬 種顏色。JPEG文件不支持透明或動畫。JPEG圖像中的壓縮級別是可以控制的,但較高的壓縮 級別(較小的文件)會導致丟失更多的信息。對於一幅以20:1壓縮比生成的圖像,人眼難以 把它和原始圖像區別開來。與BMP和GIF相比,JPEG壓縮不適用於線條圖形、純色塊和清晰邊 界。

有意思的是,JPEG是一種壓縮方案,不是一種文件格式,“JPEG文件交換格式(JFIF)” 是一種文件格式,常用於存儲和傳輸已根據JPEG方案壓縮的圖像。Web浏覽器顯示的JFIF文件 使用.jpg擴展名

◇可交換圖像文件(EXIF)

EXIF是一種適用於數碼相機拍攝的照片的文件格式,其文件中含有根據JPEG規格壓縮的圖 像。EXIF文件中還包含了有關照片的信息(拍攝日期、快門速度、曝光時間等)和相機信息 (制造商、型號等)。

◇可移植網絡圖形(PNG)

PNG格式不但保留了許多GIF格式的優點,還提供了超出GIF的功能。像GIF文件一樣,PNG 文件在壓縮時也不損失信息。PNG文件能以每像素8,24或48位來存儲顏色,並以每像素1、2、 4、8或16位來存儲灰度。相比之下,GIF文件只能使用每像素1、2、4或8位。PNG文件還可為 每個像素存儲一個Alpha值,該值指定了該像素顏色與背景顏色混合的程度。

PNG優於GIF之處在於,它能漸進地顯示一幅圖像(也就是說,在圖像通過網絡連接傳遞的 過程中,顯示的圖像將越來越完整)。PNG文件可包含灰度校正和顏色校正信息,以便圖像在 各種各樣的顯示設備上精確地呈現。

◇標簽圖像文件格式(TIFF)

TIFF是一種靈活的、可擴展的格式,各種各樣的平台和圖像應用程序都支持這種格式。 TIFF文件能以每像素任意位來存儲圖像,並可以使用各種各樣的壓縮算法。單個的多頁TIFF 文件可以存儲數幅圖像;可以把與圖像相關的信息(掃描儀制造商、主機、壓縮類型、打印 方向和每像素采樣等)存儲在文件中並使用標簽來排列這些信息;也可以根據需要通過批准 和添加新標簽來擴展TIFF格式。

4.顏色

計算機中的顏色表示通常有以下3種方式:

◇RGBA

R代表紅色,G代表綠色,B代表藍色,A代表透明度,即可紅、綠、藍和透明度的組合來表 示計算機中的所有顏色。

RGB是色光的色彩模式:3各色彩疊加形成了其他的色彩。因為3種顏色都有256個亮度水平 級,所以3種色彩疊加就形成1670萬種顏色了,也就是真彩色,通過它們足以展現絢麗的世界 。在RGB模式中,由紅、綠、藍相疊加可以產生其他顏色,因此該模式也叫加色模式。所有顯 示器、投影設備以及電視機等許多設備都是依賴於這種加色模式來實現的。

就編輯圖像而言,RGB色彩模式也是最佳的色彩模式,因為它可以提供全屏幕的24位的色 彩范圍,即真彩色顯示。但是,如果將RGB模式用於打印,那就不是最佳的了,因為RGB模式 所提供的有些色彩已經超出了打印的范圍之外,因此在打印一幅真彩色的圖像時,就必然會 損失一部分亮度,並且比較鮮艷的色彩會失真。

◇即用色調、飽和度、亮度的組合方式來表示顏色,其中H表示色相,S表示飽和度,B表示 亮度。

色相:表示純色,即組成可見光譜的單色。紅色在0度,綠色在120度,藍色在240度。它 基本上是RGB模式全色度的餅狀圖。

飽和度:表示色彩的純度,為0是為灰色。白、黑和其他灰色色彩都沒有飽和度。在最大 飽和度時,每一色相具有最純的色光。

亮度:表示色彩的明亮度。為0時即為黑色,最大亮度是色彩最鮮明的狀態。

◇CMYK

代表印刷上用的4種顏色,C代表青色,M代表洋紅色,Y代表黃色,K代表黑色。這4種顏色 的組合用來表示印刷上的顏色。

當陽光照射到一個物體上時,這個物體將吸收一部分光線,並將剩下的光線進行反射,反 射的光線就是人們所看見的物體顏色。這是一種減色色彩模式,同時也是與RGB模式的根本不 同之處。不光人們看物體的顏色時用到了這種減色模式,而且在紙上印刷時應用的也是這種 減色模式。按照這種減色模式,就衍變出了適合印刷的CMYK色彩模式。因為在實際應用中, 青色、洋紅色和黃色很難疊加形成真正的黑色,最多不過是褐色而已,因此才引入K-黑色。 黑色的作用是強化暗調,加深暗部色彩。

CMYK模式是最佳的打印模式。

在.NET平台上運用顏色時,用戶不必關心這些細節,System.Drawing.Color結構封裝了大 部分常用顏色值及其操作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved