日期:2010-05-17  浏览次数:20405 次

  一般的图形处理包括图形的放大,图形的缩小,图形的旋转和拉伸效果等。这一节中,通过实例我们来学习利用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所示。

ASP.Net图像特效处理
图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的安全控制知识。