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

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