|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
很久没有给大家带来新的文章了,最近豆腐忙于公司的业务,怠慢了各位朋友,在这里给大家先说一声 对不起了,没有办法,豆腐也要生活呀。 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 这端代码是最终生成柱图的代码,详细我就不解释了。 返回类别: 教程 上一教程: 在静态页面中显示文章被阅读的次数 下一教程: 在ASP中如何迅速优化分页的技巧 您可以阅读与"使用ASPIMAGE制作图形(一)"相关的教程: · 使用ASPIMAGE制作图形(二) · 如何使用ASP制作模似动态生长的表单 · 如何使用ASP制作类似安装向导的页面 · 使用INSTALLSHIELD制作ASP安装程序(5) · 使用XMLHTTP制作域名查询系统 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |