欢迎光临
我们一直在努力

转贴豆腐的两篇文章——用aspimage制作图形(-)

建站超值云服务器,限时71元/月

/*
豆腐制作,都是精品
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
这端代码是最终生成柱图的代码,具体我就不解释了。
以上就是一个完整的画柱图的函数,下面就来看看,豆腐生成的图形的样子吧。
转贴豆腐的两篇文章——用aspimage制作图形(-)
怎么样,酷不酷?

作者:豆腐(原创)
添加时间:may 24 2001 11:19am
赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 转贴豆腐的两篇文章——用aspimage制作图形(-)
分享到: 更多 (0)