??????前言: 本文章抄襲自本人剛剛買的《ASP.NET 3.5從入門到精通》這本書,此書介紹在 http://www.china-pub.com/44991 ?,本文章95%與此書的內(nèi)容完全一樣,另5%是我改正一些失誤以后加上去的,該書原示例代碼只能運(yùn)行在IE核心的瀏覽器上,非IE核心瀏覽器上運(yùn)行會(huì)出現(xiàn)些顯示問題,本人更改了其中的一些代碼。本文章經(jīng)歷昨晚本人五個(gè)小時(shí)的手打而成(且還未打完,下班回去繼續(xù)打,想不到我的打字速度退化得這么快,郁悶!!!),俗話說:好記性不如爛筆頭,把書的內(nèi)容手打出來,對(duì)手,對(duì)腦,都有好處!!!
10.3.3 繪制簡單圖形
?
?
簡單圖形是組成復(fù)雜圖形的基礎(chǔ),通過本小節(jié)的例子,讀者可以掌握繪制復(fù)雜圖形的基礎(chǔ)。
?
?
除了直線外,矩形是所有簡單圖形的基礎(chǔ)。因?yàn)樵? Windows 操作系統(tǒng)中,大部分圖形在內(nèi)存中的表示都是矩形塊,比如一個(gè)窗體、一個(gè)按鈕控件等。即使是圓形的界面元素,在表示其位置時(shí),仍然以所在矩形的左上角坐標(biāo)為參照點(diǎn),通過寬和高來框定其位置及其區(qū)域。
?
?
那么如何繪制矩形? Graphics 中的 DrawRectangle 可以在規(guī)定一個(gè)左上角頂點(diǎn)和長寬邊長的情況下繪制一個(gè)矩形。下面的代碼實(shí)現(xiàn)生成一個(gè) 400*300 的圖片,并畫出一個(gè)矩形。
?
?
Pen pen = new Pen(Color.Red); // 創(chuàng)建一支紅筆 Bitmap bmp = new Bitmap(400,300); Graphics g = Graphics.FromImage(bmp); // 以[50,50]為左上角,以長300,寬200繪制矩形 g.DrawRectangle(pen,new Rectangle(50,50,300,200)); pen.Dispose(); g.Dispose(); // 存為新圖片 bmp.Save(Server.MapPath("~/aa.jpg")); bmp.Dispose();?
?
運(yùn)行后,查看 aa.jpg 的效果如圖。
?
?
?
?
?
如何繪制圓形呢? Graphics 中的 DrawDllipse 可以在一個(gè)矩形范圍內(nèi)繪制橢圓,當(dāng)把矩形設(shè)置為正方形時(shí),就能畫成為正圓,代碼如下所示:
?
?
Pen pen = new Pen(Color.Red); // 創(chuàng)建一支紅筆 Bitmap bmp = new Bitmap(400,400); Graphics g = Graphics.FromImage(bmp); // 以[50,50]為左上角,以長300,寬300的矩形內(nèi)繪制圓 g.DrawEllipse(pen, new Rectangle(50,50,300,300)); pen.Dispose(); g.Dispose(); // 存為新圖片 bmp.Save(Server.MapPath("~/bb.jpg")); bmp.Dispose();?
運(yùn)行后,查看 bb.jpg 的效果如下圖。
?
?
?
?
10.3.4 繪制文本
?
?
有時(shí)用戶需要在圖片上顯示文字, Graphics 中的 DrawString 可以在圖形上繪制文字,其中可以指定坐標(biāo)、字體、字號(hào)等信息。下面的代碼簡單地在圖片上寫了幾個(gè)漢字。
?
?
Bitmap bmp = new Bitmap(200, 100); Graphics g = Graphics.FromImage(bmp); string str = "畫在圖片上的文字"; Font font = new Font("宋體", 10); // 黑色筆刷 SolidBrush brush = new SolidBrush(Color.Black); g.DrawString(str, font, brush, 50, 50); // 從[50,50]位置開始寫字 font.Dispose(); brush.Dispose(); g.Dispose(); // 存為新圖片 bmp.Save(Server.MapPath("~/text.jpg")); bmp.Dispose();?
運(yùn)行后, text.jpg 的效果如下圖所示。
?
?
???????? 注意 :使用 GDI+ 畫上去的文字是二進(jìn)制信息,無法作為文本復(fù)制粘貼
?
?
?
10.3.5 填充圖形
?
?
前面的簡單圖形基本只有邊界,內(nèi)部區(qū)域是空心的。如果想繪制一個(gè)實(shí)心圖形,可以使用 Graphics 中的 FillXXX 方法,并使用刷子( Brush 對(duì)象)填充。
?
?
下面的代碼示例實(shí)現(xiàn)用藍(lán)色填充一個(gè)圓形區(qū)域。
?
?
Bitmap bmp = new Bitmap(300, 300); Graphics g = Graphics.FromImage(bmp); // 藍(lán)色筆刷 SolidBrush brush = new SolidBrush(Color.Blue); g.FillEllipse(brush, new Rectangle(5,5,250,250)); brush.Dispose(); g.Dispose(); // 存為新圖片 bmp.Save(Server.MapPath("~/fill.jpg")); bmp.Dispose();?
?
運(yùn)行后,查看 fill.jpg 的效果如圖。
?
?
?
?
?
由此可見,利用 Fill 操作可以很方便地填充圖形,如果需要使邊界實(shí)出顯示,可以再用 Draw 方法將邊界繪制出來。
?
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
