当前位置: 首页 > 图文教程 > 网络编程 > ASP > 使用AspImage制作图形(一)

ASP
Access 2000 数据库 80 万记录通用快速分页类
Microsoft JET Database Engine 错误 ''80004005'' 未指定的错误的完美解决方法
收藏的ASP常用的函数集
asp分页的一个类
ASP开发网页牢记注意事项
ASP下操作Excel技术总结分析
ASP数据岛操作类
ASP经典分页类
asp论坛在线人数统计研究
ASP调用SQL SERVER存储程序
asp输出bmp
ASP连接数据库的全能代码
ASP面向对象编程探讨及比较
web文件管理器的后续开发
一小偷类!!有兴趣的可以看看
利用ASP实现事务处理的方法
大数量查询分页显示 微软的解决办法
如何把ASP编写成DLL
asp实现树型结构
超级ASP大分页_我的类容我做主

ASP 中的 使用AspImage制作图形(一)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 247 ::
收藏到网摘: n/a

  /*
豆腐制作,都是精品
http://www.asp888.net 豆腐技术站
如转载,请保留完整版权信息
*/

很久没有给大家带来新的文章了,最近豆腐忙于公司的业务,怠慢了各位朋友,在这里给大家先说一声
对不起了,没有办法,豆腐也要生活呀。
aspImage是serverobjects站点上非常好的一个组件,它可以使我们利用Asp实现很多对于图形的处理功能。
比如,豆腐在最近的项目中就需要对 费用进行统计,要画 柱图,饼图,等等,都需要用到这个组件。
这个组件本身没有内置柱图的功能,我们需要自己做这样的函数,还是老规矩,我们先来看看代码吧。
Function DrawPillar(arrNum)
'这个函数的功能是 生成 一个 柱图
'**************以下是变量定义********************
dim arrColor(13)
dim arrNum1()
dim i
dim intX
dim intY
'--------------以下是代码开始--------------------
i=0
arrColor(i)=RGB(255,255,255)
i=i+1
arrColor(i)=RGB(255,255,0)
i=i+1
arrColor(i)=RGB(255,0,255)
i=i+1
arrColor(i)=RGB(0,255,255)
i=i+1
arrColor(i)=RGB(255,0,0)
i=i+1
arrColor(i)=RGB(0,255,0)
i=i+1
arrColor(i)=RGB(0,0,255)
i=i+1
arrColor(i)=RGB(255,255,255)
i=i+1
arrColor(i)=RGB(255,255,0)
i=i+1
arrColor(i)=RGB(255,0,255)
i=i+1
arrColor(i)=RGB(0,255,255)
i=i+1
arrColor(i)=RGB(255,0,0)
i=i+1
arrColor(i)=RGB(0,255,0)
i=i+1
arrColor(i)=RGB(0,0,255)
i=i+1

intMax=GetMaxY(arrNum)

Set Image = Server.CreateObject("AspImage.Image")
Image.MaxX=620
Image.MaxY=300

intRatio=(Image.MaxY-40)/intMax

Image.GradientTwoWay rgb(41,137,204),vbWhite ,0,1


'Image.BackgroundColor =vbBlue
'Image.FrameRect 15,15,Image.MaxX -15,Image.MaxY -15

'Y 轴
Image.X =40+2
Image.Y =15
Image.LineTo 40+2,Image.MaxY-20
Image.TextOut "↑",40-5,14,false
Image.TextOut "单位:元",15,0,false
for i=1 to 10
Image.TextOut "-" ,40,((Image.MaxY-40)/10)*i,false
'Image.TextOut cDBL((intMax/10))*(i),0,((Image.MaxY-40)/10)*(11-i),false
next

'X轴
Image.X =Image.MaxX-15
Image.Y =Image.MaxY-20
Image.LineTo 40,Image.MaxY-20

Image.TextOut ">",Image.MaxX-15-4 ,Image.MaxY-20-9,false
for i=1 to 12
Image.TextOut i & "月" ,40+ i * (30+15) -20 ,Image.MaxY-20,false
next

if intMax=0 then
intMax=1
end if

'一年有12个月,产生 12个 颜色
intX=40

for i=0 to 11
Image.BackgroundColor = arrColor(i)
Image.Rectangle intX+20,Image.MaxY -20 , intX+50, Image.MaxY -20 - arrNum(i)*intRatio
Image.TextOut arrNum(i),intX+20, Image.MaxY -32 - arrNum(i)*intRatio , false
intX=intX+ 30 +15
next
Image.FileName=server.MapPath("test.jpg")
Image.SaveImage

set Image=nothing
Response.Write "<img src="/upload/tech/20091103/20091103102337_9ad6aaed513b73148b7d49f70afcfb32.jpg">"
End Function

function GetMaxY(arrNum)
'这个函数的功能是 得到数组中最大 的数字
'***************以下是变量定义************
dim i
dim intMax '寄存器
'---------------以下是代码开始------------
intMax=0
for i=0 to UBOUND(arrNum)
if cDbl(intMax)< cDBL(arrNum(i)) then
intMax=arrNum(i)
end if
Next

GetMaxY=intMax
End Function

我们通过代码Set Image = Server.CreateObject("AspImage.Image")得到一个AspImage的实例,现在
我们就可以利用AspImage提供给我们的动人功能了。
Image.MaxX=620
Image.MaxY=300
我们可以设定我们需要画的图形的区域。
Image.GradientTwoWay rgb(41,137,204),vbWhite ,0,1
这是一个非常非常好的方法,我们可以给这个图片的背静添加一个渐进填充的颜色。

'Y 轴
Image.X =40+2
Image.Y =15
Image.LineTo 40+2,Image.MaxY-20
Image.TextOut "↑",40-5,14,false
Image.TextOut "单位:元",15,0,false
for i=1 to 10
Image.TextOut "-" ,40,((Image.MaxY-40)/10)*i,false
next

这段代码是一个画 Y 轴的代码,不要小看这个"↑",豆腐花了很长的时间才搞定的。:)
'X轴
Image.X =Image.MaxX-15
Image.Y =Image.MaxY-20
Image.LineTo 40,Image.MaxY-20

Image.TextOut ">",Image.MaxX-15-4 ,Im