版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五篇ASP.NET高級(jí)編程,東鵬電子信息有限公司,2,內(nèi)容,第 15 章 圖形圖像編程 第 16 章 ASP.NET 和 AJAX 第 17 章 ASP.NET MVC 基礎(chǔ),3,第 15 章 圖形圖像編程,主講:Jayce_Zou,4,本章內(nèi)容 主講:Jayce_Zou,圖形編程 繪制文字特效 繪制圖片 圖像特效處理,5,圖像布局 主講:Jayce_Zou,在頁(yè)面布局中,很多設(shè)計(jì)人員喜歡使用 CSS 設(shè)計(jì),這樣能夠簡(jiǎn)化頁(yè)面代碼,將頁(yè)面布局代碼和頁(yè)面代碼相分離,從而提高了維護(hù)性。 雖然隨著技術(shù)的發(fā)展,越來(lái)越多的動(dòng)態(tài)生成頁(yè)面布局,以及動(dòng)態(tài)生成圖像的方法也越來(lái)越多的被開(kāi)發(fā)人員和設(shè)計(jì)人員所認(rèn)知,但
2、是開(kāi)發(fā)人員和設(shè)計(jì)人員還是比較喜歡使用 CSS 和 IMG 標(biāo)簽進(jìn)行頁(yè)面布局,這是因?yàn)?CSS 和 IMG 標(biāo)簽都比較簡(jiǎn)單,可以說(shuō)是“輕量級(jí)”的,即不需要頁(yè)面進(jìn)行邏輯處理也不需要?jiǎng)討B(tài)生成。,6,IMG 標(biāo)簽 主講:Jayce_Zou,IMG 標(biāo)簽是圖像標(biāo)簽,IMG 標(biāo)簽屬于 HTML 控件,在 Web 應(yīng)用中可以看到在頁(yè)面中包含大量的 IMG標(biāo)簽用于圖形圖像顯示,示例代碼如下所示: 使用 IMG 標(biāo)簽?zāi)軌蜉p松的為網(wǎng)頁(yè)添加圖片,IMG 標(biāo)簽包括以下常用屬性: Src:圖片的地址,可以是圖片的相對(duì)地址也可以是絕對(duì)地址。 Width:設(shè)定圖片的寬度。 Height:設(shè)定圖片的高度。 Alt:當(dāng)圖片顯示
3、不了時(shí)提示的字符。 Border:圖片的邊框的寬度。 Align:圖片的周片文字的對(duì)齊方式。 Title:當(dāng)鼠標(biāo)放在圖片上出現(xiàn)的提示字符。,7,CSS 主講:Jayce_Zou,通過(guò) CSS 能夠使用圖像進(jìn)行頁(yè)面布局和樣式控制。當(dāng)需要使背景呈現(xiàn)漸變效果時(shí),無(wú)需使用 JavaScript進(jìn)行控制,可以直接使用 CSS 和圖像進(jìn)行搭配使用即可。CSS 背景屬性包括: 背景顏色屬性(background-color):該屬性為 HTML 元素設(shè)定背景顏色。 背景圖片屬性(background-image):該屬性為 HTML 元素設(shè)定背景圖片。 背景重復(fù)屬性(background-repeat):該
4、屬性和 background-image 屬性連在一起使用,決定背景圖片是否重復(fù)。如果只設(shè)置 background-image 屬性,沒(méi)設(shè)置 background-repeat 屬性,在缺省狀態(tài)下,圖片既 x 軸重復(fù),又 y 軸重復(fù)。 背景附著屬性(background-attachment):該屬性和 background-image 屬性連在一起使用,決定圖 片是跟隨內(nèi)容滾動(dòng),還是固定不動(dòng)。 背景位置屬性(background-position):該屬性和 background-image 屬性連在一起使用,決定了背景圖片的最初位置。 背景屬性(background):該屬性是設(shè)置背景相關(guān)
5、屬性的一種快捷的綜合寫(xiě)法。,8,JavaScript 進(jìn)行圖像編程 主講:Jayce_Zou,HTML 圖像控件支持 JavaScript 進(jìn)行圖像操作,可以為圖像控件進(jìn)行事件處理,JavaScript 代碼如下所示: function cut() /獲取 ID 為 pic1 的圖片的屬性 var pic=document.getElementById(“pic1”) pic.width=100; /設(shè)置圖片的寬度 pic.height=100; /設(shè)置圖片的高度 上述代碼獲取圖片ID 為pic1 的圖片屬性,當(dāng)觸發(fā)該事件后,ID 為 pic1 的圖片的寬度和高度將變?yōu)?100。 為了讓圖片被
6、單擊時(shí)觸發(fā)該事件,則應(yīng)該在 IMG 標(biāo)簽中聲明該事件,代碼如下所示: ,9,GDI+簡(jiǎn)介 主講:Jayce_Zou,雖然通過(guò) IMG 標(biāo)簽和 CSS、JavaScript 相配合能夠進(jìn)行圖形圖像開(kāi)發(fā),但是其功能有限,并不能夠進(jìn)行高級(jí)的圖形圖像開(kāi)發(fā)。 GDI+是 Windows XP 中的一個(gè)子系統(tǒng),它主要負(fù)責(zé)在顯示屏幕和打印設(shè)備輸出有關(guān)信息,它是一組通過(guò)C+類(lèi)實(shí)現(xiàn)的應(yīng)用程序編程接口。 GDI+的前身是 GDI,在 C+應(yīng)用程序開(kāi)發(fā)中,C+開(kāi)發(fā)人員經(jīng)常需要使用 GDI 進(jìn)行窗口的繪制與重繪,在 Vista 操作系統(tǒng)之后的操作系統(tǒng)中,微軟對(duì)圖形圖像編程進(jìn)行了更新. 在 Vista 等系統(tǒng)中,大量的
7、使用了半透明、漸變、邊緣模糊化等效果,這就要求在編程中強(qiáng)化圖形圖像渲染。,10,主講:Jayce_Zou,GDI+相比與 GDI,進(jìn)行了一些加強(qiáng), 這些加強(qiáng)功能如下所示: 漸變的畫(huà)刷(Gradient Brushes):GDI+允許開(kāi)發(fā)人員使用漸變的畫(huà)刷來(lái)繪制線(xiàn)條、圖形以及外觀(guān)。 基數(shù)樣條函數(shù)(Cardinal Splines):GDI+支持基數(shù)樣條函數(shù)而 GDI 不支持,基數(shù)樣條能夠防止鋸齒的出現(xiàn),使得窗口以及圖形的繪制能夠平滑過(guò)渡。 持久路徑對(duì)象(Persistent Path Objects):在 GDI 中,繪制路徑在窗口更改需要通過(guò)重繪來(lái)保持圖形的持久化,而在 GDI+中,可以通過(guò)創(chuàng)
8、建對(duì)個(gè)對(duì)象來(lái)持久化。 變形和矩陣對(duì)象(Transformations Matrix Object):GDI+提供了強(qiáng)大的矩陣對(duì)象,開(kāi)發(fā)人員可以通過(guò)矩陣對(duì)象進(jìn)行圖形的翻轉(zhuǎn)、平移和縮放。 可伸縮區(qū)域(Scalable Regions):GDI+允許在一定的范圍內(nèi)進(jìn)行任何圖形變換。 GDI+不僅包括這些新特性,還包括混合以及等多種圖像類(lèi)型支持等特性。ASP.NET 相對(duì)于 ASP 的強(qiáng)大之處就在于 ASP.NET 可以使用 GDI+進(jìn)行圖形圖像編程,實(shí)現(xiàn)不同的 Web 應(yīng)用功能。,11,.NET Framework 繪圖類(lèi) 主講:Jayce_Zou,GDI+包括很多的類(lèi)、結(jié)構(gòu)和枚舉用于為開(kāi)發(fā)人員提供
9、圖形編程,這些類(lèi)、結(jié)構(gòu)和枚舉都定義在命名空間中,這些命名控件如下所示: System.Drawing:提供對(duì) GDI+基本圖形圖像功能的訪(fǎng)問(wèn),提供了 Graphics 類(lèi)進(jìn)行圖形圖像處理。 System.Drawing.Drawing2D :提供了高級(jí)的二維圖形和矢量圖形的處理功能,使用 System.Drawing.Drawing2D 能夠進(jìn)行二維圖形和二維游戲的開(kāi)發(fā)和編寫(xiě)。 System.Drawing.Imaging:主要提供了圖像處理的功能,例如將圖像進(jìn)行銳化處理,或者將圖像 變成黑白色或底片都可以通過(guò)使用該命名空間的方法。 System.Drawing.Text:提供高級(jí)的文字處理及
10、排版功能,能夠?qū)崿F(xiàn) Word 中藝術(shù)字的效果。 System.Drawing.Printing:提供圖形打印所需要的類(lèi)。 System.Drawing.Design:提供開(kāi)發(fā) UI 設(shè)計(jì)時(shí)所需要的類(lèi)。,12,類(lèi)和方法 主講:Jayce_Zou,System.Drawing 命名空間提供的類(lèi)如下所示: Bitmap:在 Bitmap 上使用圖形工具,并在其中存儲(chǔ)圖形圖像的繪圖面板。 Graphics:提供直線(xiàn)、曲線(xiàn)、多邊形等繪畫(huà)方法,也提供對(duì)一些位圖的處理,例如平移、縮放等。 Pen:提供直線(xiàn)、曲線(xiàn)等功能需要的畫(huà)筆屬性。 Brush:提供文本填充和圖形繪畫(huà),可以填充圖形如圓形、橢圓形和多邊形。
11、Color:提供顏色的枚舉,用于定義 Pen 和 Brush 的顏色。 Font:提供文本的字體屬性,定義文本的字體類(lèi)型、樣式和大小等。 Point:用于定義有序的坐標(biāo)對(duì),這些坐標(biāo)能夠定義二維平面上的點(diǎn)。 Size:定義區(qū)域的大小。 Image:用于支持位圖、指針和圖標(biāo)等文件類(lèi)型。 Rectangle:用于定義矩形區(qū)域。 StringFormat:用于定義文本在位圖上的對(duì)齊方式等屬性。,13,主講:Jayce_Zou,簡(jiǎn)而言之,Bitmap 就相當(dāng)于繪畫(huà)時(shí)需要的紙,圖形能夠繪畫(huà)到紙上面。 而 Graphics 相當(dāng)于繪畫(huà)的人, 因?yàn)槿四軌蛱峁┲粚?xiě)、曲線(xiàn)、多邊形等繪畫(huà)方法。 而 Pen 和 Br
12、ush 相當(dāng)于繪畫(huà)工具,如鉛筆、筆刷等。 Color 就相當(dāng)于是繪畫(huà)所需要的顏料。 在繪畫(huà)過(guò)程中: 首先需要使用一張紙,固定到繪畫(huà)板上, 然后有一個(gè)人能夠進(jìn)行繪畫(huà),這個(gè)人能夠進(jìn)行素描、水彩等繪畫(huà)。 但是在繪畫(huà)前,需要給這個(gè)人基本的工具,包括鉛筆、筆刷和顏料盤(pán)等。 在這些基 本物質(zhì)準(zhǔn)備完畢后,就能夠開(kāi)始繪制了。,14,Graphics 類(lèi)的屬性 主講:Jayce_Zou,DpiX:獲取對(duì)象的水平分辨率。 DpiY:獲取對(duì)象的垂直分辨率。 IsClipEmpty:為對(duì)象指定裁剪區(qū)域。 IsVisibleClipEmpty;判斷裁剪區(qū)域是否為空。 TextGammaValue:返回一個(gè)提供文本灰度值
13、的信息的整數(shù)值。 TextRenderingHint:獲取或設(shè)置與該圖形相關(guān)聯(lián)的文本著色模式。 通過(guò) Graphics 類(lèi)的屬性能夠獲取 Graphics 對(duì)象的水平分辨率和垂直分辨率,并能夠?yàn)?Graphics 對(duì)象進(jìn)行裁剪區(qū)域的選擇和判斷。,15,Graphics 類(lèi)的方法 主講:Jayce_Zou,Dispose:刪除圖形并釋放已分配的內(nèi)存。 DrawArc:繪制弧線(xiàn)。 DrawBezier:繪制后三次貝塞爾曲線(xiàn)。 DrawClosedCurve:繪制封閉曲線(xiàn)。 DrawCurve:繪制曲線(xiàn)。 DrawEllipse:繪制橢圓。 DrawIcon:繪制圖標(biāo)圖像。 DrawIconUnst
14、retched:繪制圖標(biāo)圖像,并可將圖像縮放到指定大小。 DrawImage:繪制圖像。 DrawImageUnscaled:繪制圖像,并可將圖像縮放到指定大小。 DrawImageUnscaledAndClipped:在不進(jìn)行縮放的情況下進(jìn)行圖像繪制。,16,主講:Jayce_Zou,DrawLine:繪制線(xiàn)條。 DrawPie:繪制扇形。 DrawPolygon:繪制多邊形。 DrawRectangle:繪制矩形。 DrawString:繪制字符串。 FillClosedCurve:填充封閉曲線(xiàn)的內(nèi)部區(qū)域。 FillEllipse:填充橢圓內(nèi)部。 FillPath:填充 GraphicsP
15、ath 內(nèi)部。 FillPie:填充扇形內(nèi)部。 Restore:恢復(fù)圖形狀態(tài)。 Save:保存圖形。 SetClip:為對(duì)象設(shè)置剪輯區(qū)域。,17,繪制線(xiàn)條 主講:Jayce_Zou,示例代碼如下所示: Bitmap images = new Bitmap(200, 200); /創(chuàng)建畫(huà)紙 Graphics gr = Graphics.FromImage(images); Pen pen = new Pen(Color.Red, 5); /創(chuàng)建畫(huà)筆 gr.Clear(Color.White); /設(shè)置畫(huà)筆的顏色 gr.DrawLine(pen, 0, 0, 200, 200); /開(kāi)始繪畫(huà) im
16、ages.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); gr.Dispose(); /釋放繪圖對(duì)象 images.Dispose(); /釋放圖形對(duì)象,18,繪制矩形 主講:Jayce_Zou,繪制矩形的方法同繪制線(xiàn)條基本相同,但是繪制矩形不僅要指定矩形的坐標(biāo),還需要指定矩形的高度和寬度,示例代碼如下所示: Bitmap images = new Bitmap(400, 400); /創(chuàng)建畫(huà)紙 Graphics gr = Graphics.FromImage(images); Pen pen = ne
17、w Pen(Color.Red, 5); /創(chuàng)建畫(huà)筆 gr.Clear(Color.White); /設(shè)置畫(huà)筆顏色 gr.DrawLine(pen, 0, 0, 200, 200); /繪制線(xiàn)條 gr.DrawRectangle(pen, 200, 200, 50, 50); /繪制矩形 images.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); gr.Dispose(); images.Dispose();,19,繪制橢圓 主講:Jayce_Zou,繪制橢圓的方法只需要使用 DrawEllipse
18、方法即可,示例代碼如下所示: gr.DrawEllipse(pen, 0, 0, 300, 200); /繪制橢圓 上述代碼繪制了一個(gè)橢圓形,該橢圓形繪制的起點(diǎn)為(0,0),寬度為 300,高度為 200。 DrawEllipse方法同 DrawRectangle 方法基本相同,因?yàn)檫@兩個(gè)方法都包括五個(gè)參數(shù),這 5 個(gè)參數(shù)都需要指定繪制起點(diǎn)、 寬度和高度。當(dāng)需要繪制圓形時(shí),只需要將寬度和高度設(shè)置相等即可,示例代碼如下所示: gr.DrawEllipse(pen, 0, 0, 200, 200); /繪制圓 當(dāng)設(shè)置寬度和高度相等時(shí),該橢圓就會(huì)以圓形呈現(xiàn),上述代碼就實(shí)現(xiàn)了圓形的繪制。,20,繪制多
19、邊形 主講:Jayce_Zou,繪制多邊形的方法只需要使用 DrawPolygon 方法即可,與繪制規(guī)則圖形不同的是,繪制多邊形需要指定多邊形的各個(gè)節(jié)點(diǎn),DrawPolygon 方法通過(guò)獲取這些節(jié)點(diǎn)即可組成一個(gè)多邊形,示例代碼如下所示: Point pt1 = new Point(50, 50); /設(shè)置節(jié)點(diǎn) Point pt2 = new Point(150, 150); /設(shè)置節(jié)點(diǎn) Point pt3 = new Point(200, 200); /設(shè)置節(jié)點(diǎn) Point pt4 = new Point(350, 170); /設(shè)置節(jié)點(diǎn) Point pt5 = new Point(90, 3
20、0); /設(shè)置節(jié)點(diǎn) Point pt6 = new Point(180, 90); /設(shè)置節(jié)點(diǎn) Point pts = pt1, pt2, pt3, pt4, pt5, pt6 ; /設(shè)置節(jié)點(diǎn)組 gr.DrawPolygon(pen, pts); /繪制多邊形,21,繪制文字 主講:Jayce_Zou,通過(guò)使用 DrawString 方法能夠繪制文字并呈現(xiàn)在圖像中,示例代碼如下所示: Font font = new Font(“宋體”, 20); /創(chuàng)建文字對(duì)象 Brush brush=new SolidBrush(Color.Red); /創(chuàng)建筆刷對(duì)象 gr.DrawString(我的字符串
21、, font, brush, 200,200); /繪制文字 使用 DrawString 方法,需要對(duì) DrawString 方法進(jìn)行參數(shù)傳遞,DrawString 方法需要五個(gè)參數(shù),其中包括需要輸出的字符串、文本格式對(duì)象、筆刷對(duì)象以及文字開(kāi)始繪制的坐標(biāo)。 上述代碼中,輸出字串為“我的字符串”。文本格式通過(guò) Font 默認(rèn)構(gòu)造函數(shù)構(gòu)造,并在坐標(biāo)為(200,200)位置開(kāi)始繪制。,22,圖形繪制實(shí)例 主講:Jayce_Zou,protected void Page_Load(object sender, EventArgs e) Bitmap images = new Bitmap(400, 4
22、00); /創(chuàng)建畫(huà)紙 Graphics gr = Graphics.FromImage(images); /創(chuàng)建繪圖類(lèi) Pen pen = new Pen(Color.Red, 5); /創(chuàng)建畫(huà)筆 gr.Clear(Color.White); /繪制直線(xiàn) gr.DrawLine(pen, 0, 0, 200, 200); /繪制矩形 gr.DrawRectangle(pen, 200, 200, 50, 50); /繪制橢圓 gr.DrawEllipse(pen, 0, 0, 300, 200); /繪制多邊形 Point pt1 = new Point(50, 50); /設(shè)置節(jié)點(diǎn) Poin
23、t pt2 = new Point(150, 150); /設(shè)置節(jié)點(diǎn) Point pt3 = new Point(200, 200); /設(shè)置節(jié)點(diǎn) Point pt4 = new Point(350, 170); /設(shè)置節(jié)點(diǎn) Point pt5 = new Point(90, 30); /設(shè)置節(jié)點(diǎn) Point pt6 = new Point(180, 90); /設(shè)置節(jié)點(diǎn) gr.DrawPolygon(pen, pts); /繪制文字,23,主講:Jayce_Zou,Font font = new Font(宋體, 20); /設(shè)置字體大小 Brush brush=new SolidBrush
24、(Color.Red); /創(chuàng)建紅色筆刷 gr.DrawString(我的字符串, font, brush, 200,200); /填充矩形 SolidBrush brush2 = new SolidBrush(Color.YellowGreen); /填充矩形 gr.FillRectangle(brush2,new Rectangle(100,100,100,100); images.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); gr.Dispose(); images.Dispose(); ,24
25、,投影特效 主講:Jayce_Zou,使用 System.Drawing.Drawing2D 和 System.Drawing.Text 能夠進(jìn)行文字投影特效。 在制作文字投影特效前,首先需要使用命名空間 System.Drawing.Drawing2D 和 System.Drawing.Text。 在實(shí)現(xiàn)投影效果前,首先需要了解如何制作投影。 投影特效的難度在于如何描述本體的影子。 其實(shí)在畫(huà)面上,影子是不可能像平常的描述一樣呈現(xiàn)在圖片上的,這也就是說(shuō),影子其實(shí)也是本體對(duì)象的另一種表現(xiàn)形式。 首先,影子可以看作是本體的壓縮和平移,在對(duì)本體進(jìn)行壓縮和平移后,從一定的角度上看就好像是本地的影子。
26、其次,影子是沒(méi)有顏色的,通常用灰色輸出即可實(shí)現(xiàn)影子的效果。 在制作投影特效時(shí),需要使用到 Matrix 類(lèi),該類(lèi)需要使用 System.Drawing.Drawing2D 和 System.Drawing.Text 命名空間。,25,示例代碼 主講:Jayce_Zou,Bitmap images = new Bitmap(600, 150); /創(chuàng)建 Bitmap 對(duì)象 Graphics gr= Graphics.FromImage(images); /創(chuàng)建 Graphics 對(duì)象 gr.Clear(Color.WhiteSmoke); /填充背景顏色 /設(shè)置文本輸出質(zhì)量 gr.TextRen
27、deringHint = TextRenderingHint.ClearTypeGridFit; gr.SmoothingMode = SmoothingMode.AntiAlias; Font newFont = new Font(宋體, 32); Matrix matrix = new Matrix(); /執(zhí)行投射 matrix.Shear(-1.5f, 0.0f); /執(zhí)行縮放 matrix.Scale(1, 0.5f); /執(zhí)行平移 matrix.Translate(130, 88); /執(zhí)行坐標(biāo)轉(zhuǎn)換 gr.Transform = matrix;,26,主講:Jayce_Zou,So
28、lidBrush grayBrush = new SolidBrush(Color.Gray); SolidBrush colorBrush = new SolidBrush(Color.Red); string text = ASP.NET 3.5 開(kāi)發(fā)大全; /設(shè)置文字 /繪制陰影 gr.DrawString(text, newFont, grayBrush, new Point(0, 30); gr.ResetTransform(); /圖形變形 /繪制前景 gr.DrawString(text, newFont, colorBrush, new PointF(0, 40); image
29、s.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);,27,主講:Jayce_Zou,Matrix類(lèi)中常用的方法有: Shear:通過(guò)預(yù)先計(jì)算比例向量,將指定的比例向量應(yīng)用到此矩陣。 Scale:通過(guò)預(yù)先計(jì)算切變向量將指定的切變向量應(yīng)用到此矩陣。 Translate:通過(guò)預(yù)先計(jì)算轉(zhuǎn)換向量,將指定的轉(zhuǎn)換向量應(yīng)用到此矩陣。 使用 Matrix 類(lèi)能夠進(jìn)行對(duì)象的投射、縮放以及平移,并通過(guò)執(zhí)行坐標(biāo)轉(zhuǎn)換呈現(xiàn)在圖片中。 作為投影特效,Matrix 類(lèi)通過(guò)將現(xiàn)有的對(duì)象進(jìn)行轉(zhuǎn)換、壓縮、平移,并通過(guò) Graphics 對(duì)象
30、的 DrawString 方法進(jìn)行輸出, 使之看上去向文字的投影效果一樣。,28,倒影特效 主講:Jayce_Zou,Brush shadowBrush = Brushes.LightBlue; /創(chuàng)建倒影筆刷 Brush foreBrush = Brushes.Blue; /創(chuàng)建本體筆刷 Font font = new Font(微軟雅黑, Convert.ToInt16(40), FontStyle.Italic); /配置字體 Bitmap images = new Bitmap(600, 150); Graphics gr = Graphics.FromImage(images); /
31、創(chuàng)建 Graphice gr.Clear(Color.WhiteSmoke); string text = ASP.NET 3.5 開(kāi)發(fā)大全; /設(shè)置文字 Size size = gr.MeasureString(text, font); /設(shè)置矩形大小 int posX = (600 - Convert.ToInt16(size.Width) / 2; /設(shè)置平移坐標(biāo) int posY = (150 - Convert.ToInt16(size.Height) / 2;/設(shè)置平移坐標(biāo) gr.TranslateTransform(posX, posY); /執(zhí)行轉(zhuǎn)換 GraphicsState
32、 state = gr.Save(); /圖形保存 gr.ScaleTransform(1, -1.0F); /圖形變換 gr.DrawString(text, font, shadowBrush, 0, -120); /輸出倒影 gr.Restore(state); /圖形重置 gr.DrawString(text, font, foreBrush, 0, 0); /輸出本體 images.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);,29,旋轉(zhuǎn)特效 主講:Jayce_Zou,如果要實(shí)現(xiàn)旋轉(zhuǎn)特效,首
33、先需要獲取一段文字,該文字進(jìn)行通過(guò)平移坐標(biāo)原 點(diǎn)進(jìn)行變換,當(dāng)需要實(shí)現(xiàn)旋轉(zhuǎn)時(shí),則通過(guò)循環(huán)不停的實(shí)現(xiàn)旋轉(zhuǎn)平移 : Bitmap images = new Bitmap(400, 400); /創(chuàng)建 Bitmap 對(duì)象 Graphics gr = Graphics.FromImage(images); /創(chuàng)建繪圖對(duì)象 gr.Clear(Color.WhiteSmoke); /格式化畫(huà)布 gr.SmoothingMode = SmoothingMode.AntiAlias; /設(shè)置邊緣 for (int i = 0; i = 360; i += 20) /循環(huán)旋轉(zhuǎn) gr.TranslateTransf
34、orm(200, 200); /變形 gr.RotateTransform(i); /按角度變形 Brush brush = Brushes.Red; /創(chuàng)建畫(huà)筆 Font font = new Font(微軟雅黑, 12); /創(chuàng)建文字 /繪制文字 gr.DrawString(ASP.NET 3.5 開(kāi)發(fā)大全 , font, brush, 0, 0); gr.ResetTransform(); /重置變形 images.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);,30,載入圖像文件 主講:Jayc
35、e_Zou,使用 Image 控件能夠載入圖像文件,拖動(dòng)一個(gè) Image 控件到頁(yè)面,頁(yè)面會(huì)自動(dòng)生成 HTML 代碼,示例代碼如下所示。 在控件的章節(jié)中,講到 Image 控件包括以下常用屬性: AlternateText:在圖像無(wú)法顯示時(shí)顯示的備用文本。 ImageAlign:圖像的對(duì)齊方式。 ImageUrl:要顯示圖像的 URL。 配置完成后的圖像控件示例代碼如下所示: ,31,GDI+輸出圖像 主講:Jayce_Zou,示例代碼如下所示: protected void Page_Load(object sender, EventArgs e) /讀取現(xiàn)有圖片 Bitmap images
36、 = new Bitmap(Server.MapPath(autom.jpg); /格式化輸出 images.Save(Response.OutputStream, images.RawFormat); images.Dispose(); /釋放對(duì)象 上述代碼使用了 Bitmap 類(lèi)進(jìn)行圖形輸出,Bitmap 類(lèi)的默認(rèn)構(gòu)造方法能夠載入現(xiàn)有的圖片并執(zhí)行輸出。 注意:Bitmap 類(lèi)的 RawFormat 屬性能夠直接返回現(xiàn)有文件的文件類(lèi)型,在 Bitmap 的 Save 方法中可直接使用。,32,底片效果 主講:Jayce_Zou,在 ASP.NET 中,可以通過(guò)網(wǎng)頁(yè)進(jìn)行圖片處理,包括底片、銳化
37、等效果。 在進(jìn)行底片效果制作前,首先需要了解底片效果是如何實(shí)現(xiàn)的,在圖片顯示中,其實(shí)是很多很多的點(diǎn)(像素)組成一個(gè)圖片的,如果像素的數(shù)量很多,則圖片顯示的就清晰,如果像素?cái)?shù)量較少,則圖片看上去就不那么清晰。一個(gè)圖片的組成是通過(guò)像素組成的,這也就是說(shuō),一個(gè)圖片包括很多的小點(diǎn)進(jìn)行組合,最后組合成圖片。 在進(jìn)行底片效果的制作時(shí),只需要分別找到圖片中的這些點(diǎn),并獲取這些點(diǎn)的像素的值,再取反保存即可。,33,主講:Jayce_Zou,Bitmap images = new Bitmap(Server.MapPath(change.jpg); for (int i = 0; i images.Width;
38、 i+) /循環(huán)遍歷寬 for (int j = 0; j images.Height; j+) /循環(huán)遍歷高度 Color pix = images.GetPixel(i, j); /獲取圖像像素值 int r = 255 - pix.R; /像素值取反 int g = 255 - pix.G; /轉(zhuǎn)換顏色 int b = 255 - pix.B; /轉(zhuǎn)換顏色 images.SetPixel(i, j, Color.FromArgb(r, g, b); /保存像素值 images.Save(Response.OutputStream, System.Drawing.Imaging.Image
39、Format.Jpeg); images.Dispose();,34,浮雕效果 主講:Jayce_Zou,執(zhí)行浮雕效果與底片效果實(shí)現(xiàn)手法非常類(lèi)似,但是浮雕效果的實(shí)現(xiàn)與底片效果的實(shí)現(xiàn)中所需要使用的算法又不盡相同。 實(shí)現(xiàn)浮雕效果通常是將圖像上每個(gè)像素點(diǎn)與其對(duì)角線(xiàn)的像素點(diǎn)形成差值,使相似顏色值淡化,不同顏色值之間保持突出,從而形成縱深感,達(dá)到浮雕的效果。 在程序開(kāi)發(fā)中,可以講像素點(diǎn)的像素值與周邊的像素值相減后加上 128,則可以呈現(xiàn)浮雕效果。,35,浮雕效果 主講:Jayce_Zou,Bitmap images = new Bitmap(Server.MapPath(change.jpg); /載入
40、圖片 for (int i = 0; i images.Width-1; i+) /循環(huán)遍歷寬 for (int j = 0; j images.Height-1; j+) /循環(huán)遍歷高度 Color pix1 = images.GetPixel(i, j); /獲取圖像像素值 Color pix2 = images.GetPixel(i+1, j+1); /獲取圖像像素值 int r = Math.Abs(pix1.R - pix2.R + 128); /實(shí)現(xiàn)浮雕效果 int g = Math.Abs(pix1.G - pix2.G + 128); int b = Math.Abs(pix1.B - pix2.B + 128); r = check(r); /判斷是否溢出 g = check(g); b = check(b); images.SetPixel(i, j, Color.FromArgb(r, g, b); /設(shè)置像素值 images.Save(Response.OutputStream, System.Drawi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年?yáng)|營(yíng)港經(jīng)濟(jì)開(kāi)發(fā)區(qū)公開(kāi)招聘聘任制工作人員15人備考題庫(kù)及1套參考答案詳解
- 2026年北京第三實(shí)驗(yàn)學(xué)校校園招聘11人北京第三實(shí)驗(yàn)學(xué)校備考題庫(kù)完整答案詳解
- 2026年廣東派潭鎮(zhèn)中心衛(wèi)生院鄉(xiāng)村醫(yī)生招聘6人備考題庫(kù)有答案詳解
- 2026年關(guān)于內(nèi)江市部分市本級(jí)事業(yè)單位公開(kāi)選調(diào)工作人員14人的備考題庫(kù)完整答案詳解
- 2026年寧波市鎮(zhèn)海區(qū)龍賽醫(yī)療集團(tuán)公開(kāi)招聘派遣制工作人員備考題庫(kù)完整答案詳解
- 2026年哈爾濱市道里區(qū)愛(ài)建社區(qū)衛(wèi)生服務(wù)中心招聘?jìng)淇碱}庫(kù)參考答案詳解
- 2026年中建材(浙江)材料科技有限公司招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 2026年中華人民共和國(guó)滄源海關(guān)招聘?jìng)淇碱}庫(kù)及答案詳解參考
- 2026年南安市豐富小學(xué)教師招聘?jìng)淇碱}庫(kù)及參考答案詳解一套
- 2026年?yáng)|勝區(qū)訶額倫社區(qū)衛(wèi)生服務(wù)中心招聘西醫(yī)醫(yī)師1名、彩超醫(yī)師1名備考題庫(kù)及答案詳解1套
- 種子公司企業(yè)管理制度
- 口腔門(mén)診急救藥箱配置與管理規(guī)范
- 2025至2030中國(guó)日本清酒行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及發(fā)展前景與投資報(bào)告
- T/CECS 10169-2021埋地用聚乙烯(PE)高筋纏繞增強(qiáng)結(jié)構(gòu)壁管材
- openEuler系統(tǒng)管理與服務(wù)器配置 課件 第9章DNS服務(wù)器
- 供銷(xiāo)集團(tuán)考試試題及答案
- 《并購(gòu)后的整合與管理》課件
- 高一期中歷史試卷及答案
- 《紀(jì)檢工作規(guī)范化法治化正規(guī)化建設(shè)年行動(dòng)工作方案》培訓(xùn)
- 江蘇省蘇州市2020年中考化學(xué)真題試卷(含答案)
- 《環(huán)境保護(hù)稅納稅申報(bào)表(A類(lèi))》
評(píng)論
0/150
提交評(píng)論