一般的图形处理包括图形的放大,图形的缩小,图形的旋转和拉伸效果等。这一节中,通过实例我们来学习利用GDI+来处理这些操作。
新建一个Web窗体,命名为GDI_Sample5.aspx, GDI_Sample5.aspx.vb中的逻辑代码如下:
'------code begin-----
'--省略命名空间引用
Public Class GDI_Sample5
Inherits System.Web.UI.Page
#Region " Web 窗体设计器生成的代码 "
'此处省略窗体设计器生成的代码
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
Dim i As Int16
Dim b As Bitmap
b = New Bitmap(300, 1000)
'声明Graphics对象
Dim g As Graphics
'指定画布
g = Graphics.FromImage(b)
'设置背景色为黑色
g.Clear(Color.Black)
Dim img As Drawing.Image
img = Drawing.Image.FromFile(Server.MapPath(".") & "/test.jpg")
'原图
g.DrawString("-=原图=-", New Font("宋体", 12, FontStyle.Bold), Brushes.White, New PointF(80, 2))
g.DrawImage(img, 50, 20, img.Width, img.Height)
'放大
g.DrawLine(New Pen(Color.White, 1), 10, 165, 280, 165)
g.DrawString("-=放大2倍图=-", New Font("宋体", 12, FontStyle.Bold), Brushes.White, New PointF(80, 168))
g.DrawImage(img, 20, 190, CInt(img.Width * 1.4), CInt(img.Height * 1.4))
'缩小
g.DrawLine(New Pen(Color.White, 1), 10, 410, 280, 410)
g.DrawString("-=缩小1/2倍图=-", New Font("宋体", 12, FontStyle.Bold), Brushes.White, New PointF(80, 415))
g.DrawImage(img, 80, 435, CInt(img.Width / 1.4), CInt(img.Height / 1.4))
'拉伸
g.DrawLine(New Pen(Color.White, 1), 10, 775, 280, 775)
g.DrawString("-=拉伸效果=-", New Font("宋体", 12, FontStyle.Bold), Brushes.White, New PointF(80, 780))
g.DrawImage(img, 10, 795, img.Width + 100, img.Height - 50)
'旋转
g.DrawLine(New Pen(Color.White, 1), 10, 560, 280, 560)
g.DrawString("-=旋转90度=-", New Font("宋体", 12, FontStyle.Bold), Brushes.White, New PointF(80, 565))
img.RotateFlip(RotateFlipType.Rotate90FlipNone)
g.DrawImage(img, 80, 590, img.Width, img.Height)
'导出到客户浏览器中,由于asp.net绘制的图片使用了安全色,所以在浏览器查看时候会造成失色
b.Save(Response.OutputStream, Drawing.Imaging.ImageFormat.Gif)
'另保存为该Web应用程序的物理路径目录下的test1.jpg文件
b.Save(Server.MapPath(".") & "/test1.jpg")
End Sub
End Class
'-----code end --------
保存编译后,结果下图11.5所示。
图11.5 GDI_Sample5.aspx运行结果
由于输出到客户端浏览器中的图像是采用安全色显示,所以在通过浏览器浏览时图像会失色,但是在硬盘中保存的图像是原色,不会有失色现象的。
11.6 本章小结
本章简要的介绍了利用GDI+技术绘制图形的方法。GDI+是全新的图形桌面引擎,是一个应用编程接口,GDI+是对GDI的高层次的一种封装类.Graphics对象是绘图操作中唯一保留的对象.用.NET生成图形的功能封装在System.Drawing名称空间中,它支持多种图形文件格式,包括:JPEG、GIF、PNG、TIFF、BMP、PhotoCD、FlashPIX、WMF、EMF和EXIF。利用BitMap对象和Graphics对象就可以轻松的实现一些简单的图形处理需求。当然,GDI+技术的绘制图形功能绝非一个章节能详细列尽,本章只是简要的介绍,不是本书重点,有兴趣的读者可以参阅有关专门书籍。下一章我们将学习ASP.NET的安全控制知识。