我又来了,这几天我无意发现了一个地方有这个源码。当时下下来就没再找到那个网站。真得怪。好像是站长论坛上吧。这个效果不错。见图。
浏览页:http://www.szrgb.net/text/aspvml/ceshi.asp?ty=1&solid=true
只是现在只支持IE。
源码在下。相在代码:
<%
'这段注释不影响性能和速度,请保留
'开发人:宋新成
'形式:开源
'官方网址:www.idesktop.com.cn
'使用范围:各种需要生成图形报表,而又不能安装插件或者对速度要求比较高的系统
'联系方式:sxch2003@gmail.com 或 sxch2003@163.com
'演示地址:www.idesktop.com.cn/demo.htm
'立体图形产生模块需要付费,50RMB,一年内升级免费
Class AspVml
dim lcolor
Private Sub Class_Initialize
lcolor="blue"
End Sub
' Destructor'''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Class_Terminate
End Sub
function setColor(color)
lcolor=color
end function
Function CreatePic(w,h,dc,t)
Dim header,tail
Dim content
Dim linex,liney
Dim back,lback
Dim piestr
Dim num
Dim width
DIm height
num=dc.count
width=getWidth(num)
height=getHeight(num)
'height=500
header=GetHeader(width,height,t)
tail=GetTail()
piestr=""
linex=DrawLineX(dc.count,width,height)
liney=DrawLineY(width,height)
back=GetBackground(width,height)
lback=GetLegendBack(width,height)
if(t=1) then
content=GetContent(dc,width,height)
elseif (t=2) then
content=CreateLine(dc,width,height)
elseif (t=3) then
piestr=wirtePieHeader
linex=""
liney=""
header=GetPieHeader(width,height,t)
content=createPie(dc,width,height)
else
content=GetContent(dc)
end if
CreatePic=piestr & header&back&lback&content&linex&liney&tail
End Function
function getWidth(num)
dim ret
if(num>20) then
ret=int(num*700/20)+1
else
ret=700
end if
getWidth=ret
end function
function getHeight(num)
dim ret
if(num>20) then
ret=int(num*500/20)+1
else
ret=500
end if
getHeight=ret
end function
Function GetHeader(w,h,t)
Dim panel_header
Dim bw,bh
bw=int(w/700*5900)+1
bh=int(h/500*2900)+1
Dim x1,y1
Dim xs2,ys2,xe2,ye2
Dim xs3,ys3,xe3,ye3
x1=int(w/700*4900)+1
y1=int(h/500*3500)+1
xs2=200
ys2=100
xe2=200
ye2=int(h/500*2700)+1
xs3=200
ys3=2700
xe3=int(w/700*4500)+1
ye3=2700
panel_header="<v:group ID=""col"&t&""" style=""WIDTH:"&w&"px;HEIGHT:"&h&"px"" coordsize="""&x1&","&y1&" ""><v:line from=""200,100"" to=""200,"&ye2&""" style=""Z-INDEX:8;POSITION:absolute"" strokeweight=""1pt""><v:stroke StartArrow=""classic""/></v:line><v:line from=""200,"&ye2&""" to="""&xe3&","&ye2&""" style=""Z-INDEX:8;POSITION:absolute"" strokeweight=""1pt""><v:stroke EndArrow=""classic""/></v:line><v:rect style=""WIDTH:"&bw&"px;HEIGHT:"&bh&"px"" coordsize=""21600,21600"" fillcolor=""#EEEEEE"" ><v:shadow on=""t"" type=""single"" color=""silver"" offset=""4pt,3pt""></v:shadow></v:rect>"
GetHeader=panel_header
End Function
Function GetPieHeader(w,h,t)
Dim panel_header
Dim x1,y1
Dim bw,bh
bw=int(w/700*5900)+1
bh=int(h/500*2900)+1
x1=int(w/700*4900)+1
y1=int(h/500*3500)+1
panel_header="<v:group ID=""col"&t&""" style=""WIDTH:"&w&"px;HEIGHT:"&h&"px"" coordsize="""&x1&","&y1&"""><v:rect style=""WIDTH:"&bw&"px;HEIGHT:"&bh&"px"" coordsize=""21600,21600"" fillcolor=""#EEEEEE"" ><v:shadow on=""t"" type=""single"" color=""silver"" offset=""4pt,3pt""></v:shadow></v:rect>"
GetPieHeader=panel_header
End Function
Function GetBackground(w,h)
dim str
Dim bw,bh
bw=int(w/700*4300)+1
bh=int(h/500*2700)+1
str=" <v:rect id='back' style='position:relative;left:200;top:150;width:"&bw&"; height:"&bh&";' fillcolor='#9cf' strokecolor='#DFDFDF'> <v:fill rotate='t' angle='-45' focus='100%' type='gradient'/></v:rect> "
GetBackground=str
End Function
Function GetLegendBack(w,h)
dim str
Dim bw,bh
dim leftw
'bw=int(w/700*5900)+1
bh=int(h/500*2550)+1
leftw=int(w/700*4700)+1
str=" <v:rect id='back2' style='position:relative;left:"&leftw&";top:150;width:1000; height:"&bh&";' fillcolor='#9cf' stroked='t' strokecolor='#0099ff'><v:fill rotate='t' angle='-175' focus='100%' type='gradient'/> <v:shadow on='t' type='single' color='silver' offset='3pt,3pt'/></v:rect>"
GetLegendBack=str
End Function
Function DrawLineX(num,w,h)
dim i,str,left_pad
dim width,ye2
ye2=int(h/500*2700)+1
width=200
for i=0 to num
left_pad=(i*width)+210
str=str&"<v:line from='"&left_pad&" "&ye2&"' to='"&left_pad&" "&(ye2+50)&"' style='position:relative;z-index:8'></v:line>"
next
DrawLineX=str
End function
Function DrawLineY(w,h)
dim i,str,left_pad,max
Dim retmain,increment
max=GetMaxValue(dc)
Dim x1,x2
dim y1,y2
Dim spa,spa2,xspos
x1=int(w/700*4300)+1
y1=int(h/500*2600)+1
spa=int(y1/5)+1
spa2=int(spa/2)
xspos=int(y1/2600*200)+1
increment=max/5
for i=1 to 5
left_pad=y1-((i)*spa)+xspos
str=str&"<v:line from='200 "&left_pad&"' to='"&x1&" "&left_pad&"' style='position:relative;z-index:8' strokeweight='1pt'><v:stroke color='#0099FF' /></v:line>"
str=str&"<v:line from='200 "&(left_pad+spa2)&"' to='"&x1&" "&(left_pad+spa2)&"' style='position:relative;z-index:8' color='#0099FF'><v:stroke dashstyle='Dot'/></v:line>"
str=str&"<v:Rect style=""left:-50;top:"&(left_pad-100)&";width:10;height:100"" filled=""f"" stroked=""f""> <v:TextBox inset=""10pt,10pt,10pt,10pt"" style=""font-size:9pt;""><div align=""left"">"&(i*increment)&"</div></v:TextBox></v:Rect>"
next
DrawLineY=str
End function
Function GetTail()
GetTail="</group>"
end Function
Function GetMaxValue(dc)
dim keys,val,max
dim valarr,i,retmain
max=0
valarr=dc.items()
for i=0 to ubound(valarr)
if(valarr(i)>max) then
max=valarr(i)
end if
next
retmain=max mod 5
if(retmain<>0) then
retmain=5-retmain
max=max+retmain
end if
GetMaxValue=max
end Function
Function GetContent(dc,w,h)
dim num,str,keys,width,height
Dim heightx,widthx
dim max,val,i,left_pad,top
Dim lenheight
dim topspa,y1
max=GetMaxValue(dc)
num=dc.count
width=200
lenheight=120
heightx=int(h/500*2500)+1
widthx=int(w/700*4700)+80
topspa=int(h/500*200)+1
'y1=int(h/500*2500)+1
i=0
for each keys in dc
left_pad=(i*width)+210
val=dc(keys)
height=(val*heightx)/max
top=heightx-height+topspa
'str=str&"<v:rect style=""left:470;top:1280;WIDTH:100px;HEIGHT:1420px"" fillcolor=""blue""></v:rect>"
str=str&"<v:rect style='position:relative;left:"&left_pad&";top:"& (top) &";WIDTH:"&(width*1/2)&"px;HEIGHT:" & height & ";z-index:9' coordsize='21600,21600' fillcolor='"& lcolor &"'></v:rect>"
str=str&"<v:Rect style=""left:"&(left_pad-100)&";top:"& (heightx+topspa) &";width:1000;height:100;position:relative;"" filled=""f"" stroked=""f""> <v:TextBox inset=""10pt,10pt,10pt,10pt"" style=""font-size:9pt;""><div align=""left"">"&(i+1)&"</div></v:TextBox></v:Rect>"
'这段注释不影响性能和速度,请保留
'开发人:宋新成
'形式:开源
'官方网址:www.idesktop.com.cn
'使用范围:各种需要生成图形报表,而又不能安装插件或者对速度要求比较高的系统
'联系方式:sxch2003@gmail.com 或 sxch2003@163.com
'演示地址:www.idesktop.com.cn/demo.htm
'立体图形产生模块需要付费,50RMB,一年内升级免费
Class AspVml
dim lcolor
Private Sub Class_Initialize
lcolor="blue"
End Sub
' Destructor'''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Class_Terminate
End Sub
function setColor(color)
lcolor=color
end function
Function CreatePic(w,h,dc,t)
Dim header,tail
Dim content
Dim linex,liney
Dim back,lback
Dim piestr
Dim num
Dim width
DIm height
num=dc.count
width=getWidth(num)
height=getHeight(num)
'height=500
header=GetHeader(width,height,t)
tail=GetTail()
piestr=""
linex=DrawLineX(dc.count,width,height)
liney=DrawLineY(width,height)
back=GetBackground(width,height)
lback=GetLegendBack(width,height)
if(t=1) then
content=GetContent(dc,width,height)
elseif (t=2) then
content=CreateLine(dc,width,height)
elseif (t=3) then
piestr=wirtePieHeader
linex=""
liney=""
header=GetPieHeader(width,height,t)
content=createPie(dc,width,height)
else
content=GetContent(dc)
end if
CreatePic=piestr & header&back&lback&content&linex&liney&tail
End Function
function getWidth(num)
dim ret
if(num>20) then
ret=int(num*700/20)+1
else
ret=700
end if
getWidth=ret
end function
function getHeight(num)
dim ret
if(num>20) then
ret=int(num*500/20)+1
else
ret=500
end if
getHeight=ret
end function
Function GetHeader(w,h,t)
Dim panel_header
Dim bw,bh
bw=int(w/700*5900)+1
bh=int(h/500*2900)+1
Dim x1,y1
Dim xs2,ys2,xe2,ye2
Dim xs3,ys3,xe3,ye3
x1=int(w/700*4900)+1
y1=int(h/500*3500)+1
xs2=200
ys2=100
xe2=200
ye2=int(h/500*2700)+1
xs3=200
ys3=2700
xe3=int(w/700*4500)+1
ye3=2700
panel_header="<v:group ID=""col"&t&""" style=""WIDTH:"&w&"px;HEIGHT:"&h&"px"" coordsize="""&x1&","&y1&" ""><v:line from=""200,100"" to=""200,"&ye2&""" style=""Z-INDEX:8;POSITION:absolute"" strokeweight=""1pt""><v:stroke StartArrow=""classic""/></v:line><v:line from=""200,"&ye2&""" to="""&xe3&","&ye2&""" style=""Z-INDEX:8;POSITION:absolute"" strokeweight=""1pt""><v:stroke EndArrow=""classic""/></v:line><v:rect style=""WIDTH:"&bw&"px;HEIGHT:"&bh&"px"" coordsize=""21600,21600"" fillcolor=""#EEEEEE"" ><v:shadow on=""t"" type=""single"" color=""silver"" offset=""4pt,3pt""></v:shadow></v:rect>"
GetHeader=panel_header
End Function
Function GetPieHeader(w,h,t)
Dim panel_header
Dim x1,y1
Dim bw,bh
bw=int(w/700*5900)+1
bh=int(h/500*2900)+1
x1=int(w/700*4900)+1
y1=int(h/500*3500)+1
panel_header="<v:group ID=""col"&t&""" style=""WIDTH:"&w&"px;HEIGHT:"&h&"px"" coordsize="""&x1&","&y1&"""><v:rect style=""WIDTH:"&bw&"px;HEIGHT:"&bh&"px"" coordsize=""21600,21600"" fillcolor=""#EEEEEE"" ><v:shadow on=""t"" type=""single"" color=""silver"" offset=""4pt,3pt""></v:shadow></v:rect>"
GetPieHeader=panel_header
End Function
Function GetBackground(w,h)
dim str
Dim bw,bh
bw=int(w/700*4300)+1
bh=int(h/500*2700)+1
str=" <v:rect id='back' style='position:relative;left:200;top:150;width:"&bw&"; height:"&bh&";' fillcolor='#9cf' strokecolor='#DFDFDF'> <v:fill rotate='t' angle='-45' focus='100%' type='gradient'/></v:rect> "
GetBackground=str
End Function
Function GetLegendBack(w,h)
dim str
Dim bw,bh
dim leftw
'bw=int(w/700*5900)+1
bh=int(h/500*2550)+1
leftw=int(w/700*4700)+1
str=" <v:rect id='back2' style='position:relative;left:"&leftw&";top:150;width:1000; height:"&bh&";' fillcolor='#9cf' stroked='t' strokecolor='#0099ff'><v:fill rotate='t' angle='-175' focus='100%' type='gradient'/> <v:shadow on='t' type='single' color='silver' offset='3pt,3pt'/></v:rect>"
GetLegendBack=str
End Function
Function DrawLineX(num,w,h)
dim i,str,left_pad
dim width,ye2
ye2=int(h/500*2700)+1
width=200
for i=0 to num
left_pad=(i*width)+210
str=str&"<v:line from='"&left_pad&" "&ye2&"' to='"&left_pad&" "&(ye2+50)&"' style='position:relative;z-index:8'></v:line>"
next
DrawLineX=str
End function
Function DrawLineY(w,h)
dim i,str,left_pad,max
Dim retmain,increment
max=GetMaxValue(dc)
Dim x1,x2
dim y1,y2
Dim spa,spa2,xspos
x1=int(w/700*4300)+1
y1=int(h/500*2600)+1
spa=int(y1/5)+1
spa2=int(spa/2)
xspos=int(y1/2600*200)+1
increment=max/5
for i=1 to 5
left_pad=y1-((i)*spa)+xspos
str=str&"<v:line from='200 "&left_pad&"' to='"&x1&" "&left_pad&"' style='position:relative;z-index:8' strokeweight='1pt'><v:stroke color='#0099FF' /></v:line>"
str=str&"<v:line from='200 "&(left_pad+spa2)&"' to='"&x1&" "&(left_pad+spa2)&"' style='position:relative;z-index:8' color='#0099FF'><v:stroke dashstyle='Dot'/></v:line>"
str=str&"<v:Rect style=""left:-50;top:"&(left_pad-100)&";width:10;height:100"" filled=""f"" stroked=""f""> <v:TextBox inset=""10pt,10pt,10pt,10pt"" style=""font-size:9pt;""><div align=""left"">"&(i*increment)&"</div></v:TextBox></v:Rect>"
next
DrawLineY=str
End function
Function GetTail()
GetTail="</group>"
end Function
Function GetMaxValue(dc)
dim keys,val,max
dim valarr,i,retmain
max=0
valarr=dc.items()
for i=0 to ubound(valarr)
if(valarr(i)>max) then
max=valarr(i)
end if
next
retmain=max mod 5
if(retmain<>0) then
retmain=5-retmain
max=max+retmain
end if
GetMaxValue=max
end Function
Function GetContent(dc,w,h)
dim num,str,keys,width,height
Dim heightx,widthx
dim max,val,i,left_pad,top
Dim lenheight
dim topspa,y1
max=GetMaxValue(dc)
num=dc.count
width=200
lenheight=120
heightx=int(h/500*2500)+1
widthx=int(w/700*4700)+80
topspa=int(h/500*200)+1
'y1=int(h/500*2500)+1
i=0
for each keys in dc
left_pad=(i*width)+210
val=dc(keys)
height=(val*heightx)/max
top=heightx-height+topspa
'str=str&"<v:rect style=""left:470;top:1280;WIDTH:100px;HEIGHT:1420px"" fillcolor=""blue""></v:rect>"
str=str&"<v:rect style='position:relative;left:"&left_pad&";top:"& (top) &";WIDTH:"&(width*1/2)&"px;HEIGHT:" & height & ";z-index:9' coordsize='21600,21600' fillcolor='"& lcolor &"'></v:rect>"
str=str&"<v:Rect style=""left:"&(left_pad-100)&";top:"& (heightx+topspa) &";width:1000;height:100;position:relative;"" filled=""f"" stroked=""f""> <v:TextBox inset=""10pt,10pt,10pt,10pt"" style=""font-size:9pt;""><div align=""left"">"&(i+1)&"</div></v:TextBox></v:Rect>"
发表评论
-
Oseicq是最好的可2次开发的即时通讯软件Oseicq即时通讯源码 .
2012-02-02 12:48 724Oseicq是最好的可2次开发的即时通讯软件,专 ... -
正则表达式在UBB论坛中的应用
2007-03-07 09:01 886一、读者指引 读者指引帮助你掌握本文的梗概。以免你看了大 ... -
!important和(空格)/**/:的组合技巧及其他
2007-03-07 09:06 716先温习一下对于IE的box-model的破解 IE box-m ... -
JS的IE和Firefox兼容性汇编
2007-03-07 09:08 570JS的IE和Firefox兼容性汇编(原作:hotman_x) ... -
javascript如何对中文字符进行url编码
2007-03-07 09:11 1184今天来点轻松得,这几天因做一个项目用到了对URL的编解码,就总 ... -
把应用程序从 Internet Explorer 迁移到 Mozilla
2007-03-07 09:49 1378级别: 初级 Doron Rosenberg (doronr@ ... -
用 CSS 实现的阴影效果
2007-03-08 10:08 1214阴影效果成了平面设计的一个套路,平面设计师把它当作瑞士军刀的起 ... -
一段折叠代码,带记忆功能的
2007-03-08 11:28 1162<script language="Java ... -
JavaScript中的私有成员
2007-03-10 08:16 779本文地址:http://www.nir ... -
网页设计中文标题h1~h4应用技巧
2007-07-10 17:00 1802体验css提示您本教程适合初学者应用,高手还望见笑。欢迎来信[ ...
相关推荐
在这个"ASP无组件折线图源码"中,我们讨论的是如何在ASP页面上生成折线图,而无需额外的图形组件。这通常是通过使用VBS(Visual Basic Script)和HTML来实现的。 折线图是一种常见的数据可视化工具,它通过连接一...
以下是一个简单的ASP+Highcharts生成折线图的代码片段: ```asp ' 假设我们有数据数组 Dim dataSeries : dataSeries = Array(10, 20, 30, 40, 50) ' 将数据序列化为JSON Dim jsonData : jsonData = Json....
ASP无组件上传带进度条是一种在ASP(Active Server Pages)环境下实现文件上传并显示上传进度的技术,无需额外的服务器组件。这种技术对于提高用户体验尤其重要,因为它允许用户在上传大文件时了解进度,减少了用户...
【Asp生成统计折线图】是一个涉及到Web开发技术的主题,主要关注如何使用ASP(Active Server Pages)在网页上创建动态的统计折线图。ASP是微软开发的一种服务器端脚本语言,常用于构建交互式的动态网站。在这个场景...
ASP无组件上传源码是一种在ASP(Active Server Pages)环境中实现文件上传的技术,它无需额外安装服务器组件,简化了Web应用程序中的文件上传流程。在传统的ASP应用中,如果需要处理文件上传,通常需要借助第三方...
在"尚维设计asp无组件上传源码"中,我们可以推测这是一个由尚维设计团队创建的源代码示例,它展示了如何在ASP环境下实现文件上传的功能,而且无需安装额外的服务器组件。这个源码可能包含了一些自定义的脚本和逻辑,...
ASP.NET 折线图是一种常用的数据可视化方法,用于展示数据随时间变化的趋势。在Web开发中,使用ASP.NET结合JavaScript库可以轻松实现这种效果。3D折线图为用户提供了更丰富的视觉体验,增强了数据的立体感和深度,...
在ASP(Active Server Pages)开发中,生成统计折线图...总之,ASP生成统计折线图是一个结合了数据处理、图形库应用和Web开发技巧的过程。通过学习和实践,你可以创建出直观且富有洞察力的统计图形,提升Web应用的价值。
ASP源码,压缩包解压密码:www.cqlsoft.com
ASP源码,压缩包解压密码:www.cqlsoft.com
首先,获取`canvas`元素,然后使用Chart.js的`new Chart()`构造函数创建一个新的折线图实例。提供数据和配置选项,如下所示: ```javascript var ctx = document.getElementById('myChart').getContext('2d'); ...
这个实例开发源码——"Asp生成统计折线图.zip",显然是一个使用ASP技术来实现数据可视化,特别是生成统计折线图的示例项目。在Web开发中,动态图表可以帮助用户更直观地理解大量数据,折线图则是常用的数据表示形式...
【标题】"子博asp字符转图片组件"指的是一个基于ASP(Active Server Pages)技术的源码组件,它的主要功能是将输入的字符转化为图片。在网页开发中,这种技术通常用于防止垃圾邮件机器人抓取表单中的敏感信息,如...
总结来说,这个压缩包中的ASP源码是一个实现图片上传和共享功能的应用程序,适合对ASP编程感兴趣或需要学习此类功能实现的开发者。通过研究源码,开发者可以学习到ASP如何处理用户上传的图片,如何存储和展示图片,...
在ASP源码中,"化境ASP无组件上传类 (啊估修改版) v2.0.zip" 提供了一个无需额外组件即可实现文件上传功能的类库。这个类库是由啊估修改的,可能对原始版本进行了优化或增强了某些特性,以适应更广泛的使用场景。 ...
在上述代码中,`points`数组存储了折线图上的点坐标,`Join`函数用于将这些点连接成一个字符串,然后设置到`v:path`元素的`v`属性中。 需要注意的是,VML已被现代浏览器弃用,因此在支持SVG(Scalable Vector ...