Aspx中GDI+的常见几个应用

来源:互联网 发布:翻墙登录软件 编辑:程序博客网 时间:2024/05/23 19:21

绘制饼状图
-----------------------------------------------------------------
<%@ Page Language="vb" Debug="true" %>
<%@ import namespace="system.drawing" %>
<%@ import namespace="system.drawing.imaging" %>
<%@ import namespace="system.drawing.drawing2d" %>
<%@ import namespace="System.Drawing.Text" %>
<html>
<head>
<script language="vb" runat="server">
Sub Page_Load()
    dim mChart= new ChartPie
    mChart.addvalue(800,"北京分公司","blue")
    mChart.addvalue(500,"上海分公司","red")
    mChart.addvalue(300,"天津分公司","green")
    mChart.addvalue(600,"重庆分公司","orange")
    response.write( mChart.GetCount())
    response.write(mChart.SaveChart)
    response.write("<hr><IMG SRC='http://localhost/asp.net/gdi/1.jpeg' BORDER=0>")
End Sub
class ChartPie
    private cNum
    private iCount
    private iSum as Integer
    private cContent(3,20)
    public Height
    public Width
    public FileName
    Sub ChartPie_Init()
        cNum=0
        iCount=0
        iSum=0
    End Sub
    public Function AddValue(vnumber as Long, vtext as string ,vcolor as string)
        if iCount>=20 then exit function
        iCount=iCount + 1
        cContent(1,iCount)=vnumber
        cContent(2,iCount)=vtext
        cContent(3,iCount)=vcolor
        cNum=cNum + vNumber
    End Function
    Public Function GetCount() as long
        GetCount=iCount
    End Function
    Public Function GetNum() as long
        GetNum=cNum
    End Function
Public Function SaveChart() as string
    '初始化对象
    Dim b as new system.drawing.bitmap(720, 360, pixelformat.Format16bppRgb555)
    dim g as graphics = graphics.fromimage(b)
    Dim lbrush As New SolidBrush(color.blue)
    dim i,iSize as Integer,iTemp
    g.clear(color.white)
    iSum=0
    for i=1 to iCount
        iSize = system.math.round(cContent(1,i) * 360 / cNum )
        call fillarc(g,0,0,240,240,iSum,iSize,cContent(3,i))
 savechart = savechart + "<br>" + cContent(2,i) + ":" + str(cContent(1,i))
        iSum = iSum + iSize
    next
    FileName="C:/Inetpub/wwwroot/asp.net/gdi/1.jpeg"
    b.save(FileName, imageformat.jpeg) 
    b.dispose()
End Function
private function fillarc(g,x1,y1,x2,y2,b,l,c1)
    Dim blackPen As New Pen(Color.Black, 3)
    Dim lbrush As New SolidBrush(Color.fromName(c1))
    g.FillPie(lbrush,x1,y1,x2,y2,b,l)
end function
End Class
</script>
</head>
</html>

绘制柱状图
-----------------------------------------------
<%@ Page Language="vb" Debug="true" %>
<%@ import namespace="system.Drawing" %>
<%@ import namespace="system.Drawing.imaging" %>
<%@ import namespace="system.Drawing.Drawing2d" %>
<%@ import namespace="System.Drawing.Text" %>
<script language="vb" runat="server">
    Sub Page_Load()
        Dim mChart= new ChartColumn
        mChart.addvalue(910,"北京分公司","blue")
        mChart.addvalue(400,"重庆分公司","orange")
        mChart.addvalue(500,"上海分公司","red")
        mChart.addvalue(300,"天津分公司","green")
        response.write(mChart.SaveChart)
        response.write("<hr><IMG SRC='http://localhost/asp.net/gdi/1.jpeg' ALT='' BORDER=0>")
    End Sub
    class ChartColumn
        Private cNum
        Private iCount
        Private iSum as Integer
        Private cContent(3,20)
        Private maxData as single
        Public Height as long
        Public Width  as long
        Public FileName
        Public Function AddValue(vnumber as Long, vtext as string ,vcolor as string)
            if iCount>=20 then exit function
            iCount=iCount + 1
            cContent(1,iCount)=vnumber
            cContent(2,iCount)=vtext
            cContent(3,iCount)=vcolor
            cNum=cNum + vNumber
        End Function
        Public Function GetCount() as long
            GetCount=iCount
        End Function
        Public Function GetNum() as long
            GetNum=cNum
        End Function
        Public Function SaveChart() as string
            '初始化对象
            if Height<60 then Height=300
            if Width<100 then Width=400
            Dim b as new bitmap( Width, Height, pixelformat.Format16bppRgb555)
            Dim g as graphics = graphics.fromimage(b)
            Dim lbrush As New SolidBrush(color.blue)
            Dim i,iSize as Integer,iTemp,i1 as single,i2 as single
            Dim i3 as single,i4 as single
            g.clear(color.AliceBlue)
            iSum=0
            for i=1 to iCount
                if cContent(1,i) > maxdata then maxdata=cContent(1,i)
            next
            maxdata=(maxdata * 1.15 / 100 ) * 100
           
            call Drawback(g,0,0)
            i1=(width-80)/4
            i3 = i1 / 4
            for i=1 to iCount
                i2 = cContent(1,i) / maxdata * (Height-80)
                i4 = height - 64 - i2
                iSize = system.math.round(cContent(1,i) * 360 / cNum )
                DrawColumn(g,50+(i-1)*i1+i3,i4,i2,2*i3,cContent(3,i),cContent(2,i))
                savechart = savechart + "<br>" + cContent(2,i) + ":" + str(cContent(1,i))
                iSum = iSum + iSize
            next
            FileName="C:/Inetpub/wwwroot/asp.net/gdi/1.jpeg"
            b.save(FileName, imageformat.jpeg) 
            b.dispose()
        End Function
        Private function Drawback(g,x1,y1)
            Dim i
            Dim dashValues As Single() =  {3, 2, 3, 2}
            Dim blackPen1 As New Pen(Color.Black, 1)
            Dim h1 as single
            Dim salign as new system.Drawing.stringformat
            salign.alignment = stringalignment.center
            blackPen1.DashPattern = dashValues
            Dim blackPen2 As New Pen(Color.Black, 1)
            g.DrawRectangle(blackpen1, 46, 10, width-60, height-80)
            g.DrawRectangle(blackpen1, 40, 16, width-60, height-80)
            g.DrawRectangle(blackpen2, 30, height-64, width-50, 1)
            g.DrawRectangle(blackpen2, 40, 16, 1, height-80)
            g.Drawline(blackpen2,40,16,46,10)   '左上
            g.Drawline(blackpen2,40,height-64,46,height-70) '左下
            g.Drawline(blackpen2,width-20,16,width-14,10)   '右上
            g.Drawline(blackpen2,width-20,height-64,width-14,height-70)  '右下
            h1=(height-80) / 20
            for i=0 to 20
                if i mod 5 = 0 then
                    g.DrawString((20-i)*maxdata/20, new font("Arial",10),  _
                      Brushes.black,15,i*h1+9,salign)
                    g.Drawline(blackpen2,30,i*h1+16,40,i*h1+16)
                else
                    g.Drawline(blackpen2,35,i*h1+16,40,i*h1+16)
                End if
            next
        End function
        Private function DrawColumn(g,x1,y1,h1,w1,c1,t1)
            Dim linGrBrush As New LinearGradientBrush( _
                New Point(10,y1-100), _
                New Point(10,y1+h1+100), _
                Color.FromArgb(255, 255, 255, 255), _
                Color.fromName(c1))
            Dim lbrush1 As New SolidBrush(Color.fromName(c1))
            Dim point1 as new PointF(x1, y1)
            Dim point4 as new PointF(x1+w1, y1)
            Dim point2 as new PointF(x1+6, y1-6)
            Dim point3 as new PointF(x1+6+w1, y1-6)

            Dim curvePoints1 As PointF() =  {point1, point2, point3, point4}
            Dim point5 as new PointF(x1+w1, y1)
            Dim point6 as new PointF(x1+w1+6, y1-6)
            Dim point7 as new PointF(x1+w1+6, y1+h1-6)
            Dim point8 as new PointF(x1+w1, y1+h1)
            Dim curvePoints2 As PointF() =  {point5, point6, point7, point8}
            g.FillPolygon(lBrush1, curvePoints1)
            g.FillPolygon(lBrush1, curvePoints2)
            g.FillRectangle(linGrBrush,x1, y1, w1, h1)
            Dim salign as new system.Drawing.stringformat
            salign.alignment = stringalignment.center
            g.DrawString(t1, new font("Arial",10),Brushes.black, _
              x1+20,y1+h1+10,salign)
        End function
    End Class
</script>




折线图
--------------------------------------------------------------------
<%@ Page Language="vb" Debug="true" %>
<%@ import namespace="system.drawing" %>
<%@ import namespace="system.drawing.imaging" %>
<%@ import namespace="system.drawing.drawing2d" %>
<%@ import namespace="System.Drawing.Text" %>
<script language="vb" runat="server">
Sub Page_Load()
    dim mChart= new Chart
    mChart.addvalue(185,"1")
    mChart.addvalue(278,"2")
    mChart.addvalue(185,"3")
    mChart.addvalue(200,"4")
    mChart.addvalue(217,"5")
    mChart.addvalue(203,"6")
    mChart.addvalue(251,"7")
    mChart.addvalue(281,"8")
    mChart.addvalue(297,"9")
    mChart.addvalue(185,"10")
    mChart.addvalue(278,"11")
    mChart.addvalue(185,"12")
    mChart.addvalue(200,"13")
    mChart.addvalue(217,"14")
    mChart.addvalue(233,"15")
    mChart.addvalue(251,"16")
    mChart.addvalue(281,"17")
    mChart.addvalue(297,"18")
    mChart.addvalue(281,"19")
    mChart.addvalue(297,"20")
    response.write( mChart.GetCount())
    response.write ("<br>")
    response.write(mChart.GetNum())
    response.write ("<br>")
    response.write(system.math.round(111 * 360 / 300 ))
    mChart.SaveChart
    response.write("<hr><IMG SRC='http://localhost/asp.net/gdi/1.jpeg' BORDER=0>")
End Sub
class Chart
    private cNum
    private iCount
    private iSum as Integer
    private cContent(2,20)
    public Height
    public Width
    public FileName
    Sub ChartPie_Init()
        cNum=0
        iCount=0
        iSum=0
        FileName="c:/1.gif"
    End Sub
    public Function AddValue(vnumber as Long, vtext as string)
        if iCount>=20 then exit function
        iCount=iCount + 1
        cContent(1,iCount)=vnumber
        cContent(2,iCount)=vtext
        cNum=cNum + vNumber
    End Function
    Public Function GetCount() as long
        GetCount=iCount
    End Function
    Public Function GetNum() as long
        GetNum=cNum
    End Function
    Public Function SaveChart() as string
        '初始化对象
         Dim b as new bitmap(400, 200, pixelformat.Format16bppRgb555)
         dim g as graphics = graphics.fromimage(b)
         Dim blackPen As New Pen(Color.Black, 1)
         Dim bluePen As New Pen(Color.Blue, 1)
         dim i,iSize as Integer,iTemp
         dim x1,y1,x2,y2
         dim salign as new system.drawing.stringformat
         salign.alignment = stringalignment.center
         g.clear(color.pink)
         iSum=0
         x1=35
         y1=320-cContent(1,1)
         g.drawString(cContent(2,1), new font("Arial",10),Brushes.black,x1,170,salign)
         for i=2 to iCount
       savechart = savechart + "<br>" + cContent(2,i) + ":" + str(cContent(1,i))
             x2=(i+1)*18
             y2=320-cContent(1,i)
             g.DrawLine(blackPen,x1,y1,x2,y2)
             g.drawline(bluepen,x1,10,x1,160)
             x1=x2
             y1=y2
             iSum = iSum + iSize
             g.drawString(cContent(2,i), new font("Arial",10),Brushes.black,x1,170,salign)
         next
         g.DrawRectangle(bluePen,35,10,344,150)
         FileName="C:/Inetpub/wwwroot/asp.net/gdi/1.jpeg"
         b.save(FileName, imageformat.jpeg) 
         b.dispose()
     End Function
End Class
</script>

绘一个字符串
-------------------------------
<%@ Page Language="vb" Debug="true" %>
<%@ import namespace="system.drawing" %>
<%@ import namespace="system.drawing.imaging" %>
<%@ import namespace="system.drawing.drawing2d" %>
<%@ import namespace="System.Drawing.Text" %>
<%
'初始化对象
Dim b as new system.drawing.bitmap(480, 180, pixelformat.Format16bppRgb555)
dim g as graphics = graphics.fromimage(b)
      '定义画笔颜色
      Dim blackBrush as new SolidBrush(Color.blue)
      '定义字体类型
      Dim familyName as new FontFamily("华文彩云")
      '定义字体
      Dim myFont as new Font(familyName, 36, FontStyle.Regular, GraphicsUnit.Pixel)
      '设置起点
      Dim startPoint as new PointF(10.0, 20.0)
      g.clear(color.white) '设置白色背景颜色
      '绘制字符串
      g.DrawString("Hello World!  华文彩云", myFont, blackBrush, startPoint)

'设置输出contenttype属性
response.contenttype="image/gif"
'向浏览器发送图象
b.save(response.outputstream, imageformat.gif)
b.dispose()
%>

--------------------------
<img src=???.aspx>也可以<img src=<%methoed()%>>
<img src=???.asp>asp中能调用图片,而现在可以真正的生成图片

原创粉丝点击