ASP版的柱状图

< %
Function  table1(total,table_x,table_y,thickness,table_width,all_width,all_height,table_type)
' 参数含义(传递的数组,横坐标,纵坐标,柱子的厚度,柱子的宽度,图表的宽度,图表的高度,图表的类型)
'
纯ASP代码生成图表函数1——柱状图
'
作者:龚鸣(Passwordgm) QQ:25968152 MSN:passwordgm@sina.com Email:passwordgm@sina.com
'
本人非常愿意和ASP,VML,FLASH的爱好者在HTTP://www.ilisten.cn进行交流和探讨
'
非常感谢您使用这个函数,请您使用和转载时保留版权信息,这是对作者工作的最好的尊重。
Dim  tb_color( 14 , 2 )
tb_color(
1 , 1 ) = " #d1ffd1 "
tb_color(
2 , 1 ) = " #ffbbbb "
tb_color(
3 , 1 ) = " #ffe3bb "
tb_color(
4 , 1 ) = " #cff4f3 "
tb_color(
5 , 1 ) = " #d9d9e5 "
tb_color(
6 , 1 ) = " #ffc7ab "
tb_color(
7 , 1 ) = " #ecffb7 "
tb_color(
8 , 1 ) = " #d1ffd1 "
tb_color(
9 , 1 ) = " #ffbbbb "
tb_color(
10 , 1 ) = " #ffe3bb "
tb_color(
11 , 1 ) = " #cff4f3 "
tb_color(
12 , 1 ) = " #d9d9e5 "
tb_color(
13 , 1 ) = " #ffc7ab "
tb_color(
14 , 1 ) = " #ecffb7 "

tb_color(
1 , 2 ) = " #00ff00 "
tb_color(
2 , 2 ) = " #ff0000 "
tb_color(
3 , 2 ) = " #ff9900 "
tb_color(
4 , 2 ) = " #33cccc "
tb_color(
5 , 2 ) = " #666699 "
tb_color(
6 , 2 ) = " #993300 "
tb_color(
7 , 2 ) = " #99cc00 "
tb_color(
8 , 2 ) = " #00ff00 "
tb_color(
9 , 2 ) = " #ff0000 "
tb_color(
10 , 2 ) = " #ff9900 "
tb_color(
11 , 2 ) = " #33cccc "
tb_color(
12 , 2 ) = " #666699 "
tb_color(
13 , 2 ) = " #993300 "
tb_color(
14 , 2 ) = " #99cc00 "

line_color
= " #69f "
' left_width=70 '70 is original value
'
//==================================
Dim  t1,t2
If   Int ( Len (total( 1 , 2 )))  <   Int ( Len (total( 2 , 2 )))  Then
    t1 
=   Int ( Len (total( 2 , 2 )))
Else
    t1 
=   Int ( Len (total( 1 , 2 )))
End   If
If  t1  <   Int ( Len (total( 3 , 2 )))  Then
    t2 
=   Int ( Len (total( 3 , 2 )))
Else
    t2 
=  t1
End   If
left_width 
=   Int (t2  *   12 )
' Response.End()
'
//==================================
length = thickness / 2
total_no
= UBound (total, 1 )

temp1
= 0
temp6
= 0
For  i  =   1   To  total_no
    
If  temp1  <  total(i, 1 Then  temp1  =  total(i, 1 )
    
If  temp6  >  total(i, 1 Then  temp6  =  total(i, 1 )
Next

temp1 
=   Int (temp1)
If  temp6  >=   0   Then
    temp6 
=   Int (temp6)
    
If  temp6  >   10   Then
        temp2 
=   Mid ( CStr (temp6), 2 , 1 )
        
If  temp2  >   4   Then  
            temp3 
=  ( Int (temp6 / ( 10 ^ ( Len ( CStr (temp6)) - 1 ))) - 1 ) * 10 ^ ( Len ( CStr (temp6)) - 1 )
        
Else
            temp3 
=  ( Int (temp6 / ( 10 ^ ( Len ( CStr (temp6)) - 1 ))) - 0.5 ) * 10 ^ ( Len ( CStr (temp6)) - 1 )
        
End   If
        temp6 
=  temp3
    
Else
        temp6 
=   0
    
End   If

Else
    temp6 
=   Int ( 0 - temp6)
    
If  temp6  >   10   Then
        temp2 
=   Mid ( CStr (temp6), 2 , 1 )
        
If  temp2  >   4   Then  
            temp3 
=  ( Int (temp6 / ( 10 ^ ( Len ( CStr (temp6)) - 1 ))) + 1 ) * 10 ^ ( Len ( CStr (temp6)) - 1 )
        
Else
            temp3 
=  ( Int (temp6 / ( 10 ^ ( Len ( CStr (temp6)) - 1 ))) + 0.5 ) * 10 ^ ( Len ( CStr (temp6)) - 1 )
        
End   If
        temp6 
=   0 - temp3
    
Else
        temp6 
=   - 10
    
End   If
End   If
If  temp1  >   9   Then
    temp2 
=   Mid ( CStr (temp1), 2 , 1 )
    
If  temp2  >   4   Then  
        temp3 
=  ( Int (temp1 / ( 10 ^ ( Len ( CStr (temp1)) - 1 ))) + 1 ) * 10 ^ ( Len ( CStr (temp1)) - 1 )
    
Else
        temp3 
=  ( Int (temp1 / ( 10 ^ ( Len ( CStr (temp1)) - 1 ))) + 0.5 ) * 10 ^ ( Len ( CStr (temp1)) - 1 )
    
End   If
Else
    
If  temp1  >   4   Then  temp3  =   10   Else  temp3  =   5
End   If
temp4 
=  temp3
response.write 
" <v:rect id='_x0000_s1027' alt='' style='position:absolute;left: " & table_x + left_width & " px;top: " & table_y & " px;width: " & all_width & " px;height: " & all_height & " px;z-index:-1' fillcolor='#9cf' stroked='f'><v:fill rotate='t' angle='-45' focus='100%' type='gradient'/></v:rect> "
Select   Case  table_type
Case   " A "
    
For  i = 0   to  all_height step all_height / 5
        
if  i <> all_height  then  response.write  " <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width + length & " px, " & table_y + all_height - length - i & " px' to=' " & table_x + all_width + left_width & " px, " & table_y + all_height - length - i & " px' strokecolor=' " & line_color & " '/> "
        
if  i <> all_height  then  response.write  " <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width & " px, " & table_y + all_height - length - i & " px' to=' " & table_x + left_width + length & " px, " & table_y + all_height - i & " px' strokecolor=' " & line_color & " '/> "
        response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + (left_width - 15 ) & " px, " & table_y + i & " px' to=' " & table_x + left_width & " px, " & table_y + i & " px'/> "
        response.write 
""
        response.write 
" <v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left: " & table_x & " px;top: " & table_y + i & " px;width: " & left_width & " px;height:18px;z-index:1'> "
        response.write 
" <v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='right'> " & temp4 & " </td></tr></table></v:textbox></v:shape> "
        temp4
= temp4 - (temp3 - temp6) / 5
    
Next
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width + length & " px, " & table_y & " px' to=' " & table_x + left_width + length & " px, " & table_y + all_height - length & " px' strokecolor=' " & line_color & " '/> "
    response.write 
" <v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left: " & table_x + left_width - 50 & " px;top: " & table_y - 20 & " px;width:100px;height:18px;z-index:1'> "
    response.write 
" <v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='center'>纵坐标</td></tr></table></v:textbox></v:shape> "
    response.write 
" <v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left: " & table_x + left_width + all_width & " px;top: " & table_y + all_height - 9 & " px;width:100px;height:18px;z-index:1'> "
    response.write 
" <v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='left'>横坐标</td></tr></table></v:textbox></v:shape> "

    line0
= (temp3 / (temp3 - temp6)) * all_height
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:2' from=' " & table_x + left_width & " px, " & table_y + line0 & " px' to=' " & table_x + all_width + left_width & " px, " & table_y + line0 & " px'></v:line> "
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width & " px, " & table_y + line0 - length & " px' to=' " & table_x + left_width + length & " px, " & table_y + line0 & " px' strokecolor=' " & line_color & " '/> "
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width + length & " px, " & table_y + line0 - length & " px' to=' " & table_x + all_width + left_width & " px, " & table_y + line0 - length & " px' strokecolor=' " & line_color & " '/> "
    table_space
= (all_width - table_width * total_no) / total_no
For  i = 1   to  total_no
    temp_space
= table_x + left_width + table_space / 2 + table_space * (i - 1 ) + table_width * (i - 1 )
    response.write 
" <v:rect id='_x0000_s1025' alt='' style='position:absolute; "
    response.write 
" left: " & temp_space & " px;top: "
    
if  total(i, 1 ) > 0   then
        response.write table_y
+ line0 - (total(i, 1 ) / (temp3 - temp6)) * all_height
    
else
        response.write table_y
+ line0
    
end   if
    response.write 
" px;width: " & table_width & " px;height: " & all_height * ( abs (total(i, 1 )) / (temp3 - temp6))
    response.write 
" px;z-index:1' fillcolor=' " & tb_color(i, 2 ) & " '> "
    response.write 
" <v:fill color2=' " & tb_color(i, 1 ) & " ' rotate='t' type='gradient'/> "
    response.write 
" <o:extrusion v:ext='view' backdepth=' " & thickness & " pt' color=' " & tb_color(i, 2 ) & " ' on='t'/> "
    response.write 
" </v:rect> "

    response.write 
" <v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left: " & temp_space & " px;top: "
    
if  total(i, 1 ) > 0   then
        response.write table_y
+ line0 - (total(i, 1 ) / (temp3 - temp6)) * all_height - table_width
    
else
        response.write table_y
+ line0 - table_width
    
end   if
    response.write 
" px;width: " & table_space + 15 & " px;height:18px;z-index:1'> "
    response.write 
" <v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='center'> " & total(i, 1 ) & " </td></tr></table></v:textbox></v:shape> "

    response.write 
" <v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left: " & temp_space - table_space / 2 & " px;top: " & table_y + all_height + 1 & " px;width: " & table_space + table_width & " px;height:18px;z-index:1'> "
    response.write 
" <v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='center'> " & total(i, 2 ) & " </td></tr></table></v:textbox></v:shape> "
Next

Case   " B "
    table_space
= (all_height - table_width * total_no) / total_no
    temp4
= temp6

    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width & " px, " & table_y + all_height & " px' to=' " & table_x + left_width & " px, " & table_y + all_height + 15 & " px'/> "
    response.write 
" <v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left: " & table_x + left_width - left_width & " px;top: " & table_y + all_height & " px;width: " & left_width & " px;height:18px;z-index:1'> "
    response.write 
" <v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='right'> " & temp4 & " </td></tr></table></v:textbox></v:shape> "
    temp4
= temp6 + (temp3 - temp6) / 5
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width + length & " px, " & table_y + all_height - length & " px' to=' " & table_x + left_width + all_width & " px, " & table_y + all_height - length & " px' strokecolor=' " & line_color & " '/> "
For  i = 0   to  all_width - 1  step all_width / 5
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width + i & " px, " & table_y + all_height - length & " px' to=' " & table_x + left_width + length + i & " px, " & table_y + all_height & " px' strokecolor=' " & line_color & " '/> "
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width + length + i & " px, " & table_y + all_height - length & " px' to=' " & table_x + left_width + length + i & " px, " & table_y & " px' strokecolor=' " & line_color & " '/> "
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width + i + all_width / 5 & " px, " & table_y + all_height & " px' to=' " & table_x + left_width + i + all_width / 5 & " px, " & table_y + all_height + 15 & " px'/> "
    response.write 
" <v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left: " & table_x + left_width + i + all_width / 5 - left_width & " px;top: " & table_y + all_height & " px;width: " & left_width & " px;height:18px;z-index:1'> "
    response.write 
" <v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='right'> " & temp4 & " </td></tr></table></v:textbox></v:shape> "
    temp4
= temp4 + (temp3 - temp6) / 5
Next

For  i = 1   to  total_no
    temp_space
= table_space / 2 + table_space * (i - 1 ) + table_width * (i - 1 )
    
if  total(i, 1 ) >= 0   then
        response.write 
" <v:rect id='_x0000_s1025' alt='' style='position:absolute;left: " & table_x + left_width + all_width * abs (temp6) / (temp3 - temp6) & " px;top: " & table_y + temp_space & " px;width: " & all_width * temp3 / (temp3 - temp6) * (total(i, 1 ) / temp3) & " px;height: " & table_width & " px;z-index:1' fillcolor=' " & tb_color(i, 2 ) & " '> "
        response.write 
" <v:fill color2=' " & tb_color(i, 1 ) & " ' rotate='t' angle='-90' focus='100%' type='gradient'/> "
        response.write 
" <o:extrusion v:ext='view' backdepth=' " & thickness & " pt' color=' " & tb_color(i, 2 ) & " ' on='t'/> "
        response.write 
" </v:rect> "
        response.write 
" <v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left: " & table_x + left_width + all_width * abs (temp6) / (temp3 - temp6) + all_width * temp3 / (temp3 - temp6) * (total(i, 1 ) / temp3) + thickness / 2 & " px;top: " & table_y + temp_space & " px;width: " & table_space + 15 & " px;height:18px;z-index:1'> "
        response.write 
" <v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='center'> " & total(i, 1 ) & " </td></tr></table></v:textbox></v:shape> "
    
else
        response.write 
" <v:rect id='_x0000_s1025' alt='' style='position:absolute;left: " & table_x + left_width + all_width * abs (temp6) / (temp3 - temp6) - all_width * temp3 / (temp3 - temp6) * abs (total(i, 1 ) / temp3) & " px;top: " & table_y + temp_space & " px;width: " & all_width * temp3 / (temp3 - temp6) * abs (total(i, 1 ) / temp3) & " px;height: " & table_width & " px;z-index:1' fillcolor=' " & tb_color(i, 2 ) & " '> "
        response.write 
" <v:fill color2=' " & tb_color(i, 1 ) & " ' rotate='t' angle='-90' focus='100%' type='gradient'/> "
        response.write 
" <o:extrusion v:ext='view' backdepth=' " & thickness & " pt' color=' " & tb_color(i, 2 ) & " ' on='t'/> "
        response.write 
" </v:rect> "
        response.write 
" <v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left: " & table_x + left_width + all_width * abs (temp6) / (temp3 - temp6) + thickness / 2 & " px;top: " & table_y + temp_space - table_space / 4 & " px;width: " & table_space + 30 & " px;height:18px;z-index:1'> "
        response.write 
" <v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='center'> " & total(i, 1 ) & " </td></tr></table></v:textbox></v:shape> "
    
end   if

    response.write 
" <v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left: " & table_x & " px;top: " & table_y + temp_space & " px;width: " & left_width & " px;height:18px;z-index:1'> "
    response.write 
" <v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='right'> " & total(i, 2 ) & " </td></tr></table></v:textbox></v:shape> "
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width + all_width * abs (temp6) / (temp3 - temp6) & " px, " & table_y & " px' to=' " & table_x + left_width + all_width * abs (temp6) / (temp3 - temp6) & " px, " & table_y + all_height & " px'></v:line> "
Next

Case   Else
End   Select
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width & " px, " & table_y + all_height & " px' to=' " & table_x + all_width + left_width & " px, " & table_y + all_height & " px'><v:stroke endarrow='block'/></v:line> "
    response.write 
" <v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from=' " & table_x + left_width & " px, " & table_y & " px' to=' " & table_x + left_width & " px, " & table_y + all_height & " px'><v:stroke endarrow='block'/></v:line> "

End Function
%
>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值