/*
豆腐制作,都是精品
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=test.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 ,image.maxy-20-9,false
x轴相对来说就简单多了。
一年有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
这端代码是最终生成柱图的代码,具体我就不解释了。
以上就是一个完整的画柱图的函数,下面就来看看,豆腐生成的图形的样子吧。

怎么样,酷不酷?
| 作者:豆腐(原创) |
| 添加时间:may 24 2001 11:19am |
