使用AspImage制作图形(二)
程序员文章站
2024-01-30 08:12:16
/*豆腐制作,都是精品https://www.888.net 豆腐技术站如转载,请保留完整版权信息*/前面我们讲了如何利用aspimage来制作柱图,柱图还好办,起码有关于长方形的...
/*
豆腐制作,都是精品
https://www.888.net 豆腐技术站
如转载,请保留完整版权信息
*/
前面我们讲了如何利用aspimage来制作柱图,柱图还好办,起码有关于长方形的函数,我们可以来
借用,但是如果是,饼图怎么办?
有的朋友不是说了,aspimage上不是有pie的函数吗?是呀,它是有,但是它的那个也太难用了。
豆腐没有办法,经过同事的帮助,利用我们高中学习的三角形公式(三角形公式?有没有搞错?)
终于做出了这样的函数,而且使用起来非常的方便。大家请看
function drawpie(arrnum,arrtext)
函数功能:根据指定的 数值和显示,他们均是 数组
**********以下是变量定义**************************
dim inttotal 当前
dim i
dim intsettledangle
dim arrcolor(6)
----------以下是代码开始--------------------------
设置颜色
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
以下开始 对数据进行处理
首先得到 数量的总数
inttotal=0
for i=0 to ubound(arrnum)
inttotal=inttotal + arrnum(i)
next
set image = server.createobject("aspimage.image")
设定 图象的 区域大小
image.maxx=300
image.maxy=300
生成渐进色
image.gradienttwoway rgb(41,137,204),vbwhite ,0,1
处理角度
intsettledangle=0
intrectstart=0
for i=0 to ubound(arrnum)
intangle=(arrnum(i)/inttotal)*360
一个一个的画 扇区,最终合成一个完整的 圆
set image=drawsinglepie(image, 360-intsettledangle,arrcolor(i))
在图象的最下方 对图象内容进行描述
image.backgroundcolor =arrcolor(i)
image.rectangle intrectstart+10*(i+1),250,intrectstart+10*(i+1)+10,260
image.textout arrtext(i), intrectstart+10*(i+1)+10,245,false
在图象的最下方 对图象内容进行描述
image.backgroundcolor =arrcolor(i)
image.rectangle intrectstart+10*(i+1),270,intrectstart+10*(i+1)+10,280
image.textout cstr(intangle) & "%", intrectstart+10*(i+1)+10, 265,false
intrectstart=intrectstart+50
intsettledangle=intsettledangle + intangle
next
image.filename=server.mappath("test.jpg")
image.saveimage
set image=nothing
response.write "<img src="/edu/uploadpic/2007-12/2007129133030166.jpg">"
end function
function drawsinglepie(image,intangle,intcolor)
函数功能: 根据指定的 角度和颜色 画一个矩形
**************以下是变量定义********************
const pi=3.1415926 圆周率
dim pii 经过180角转换后的圆周,弧度
dim x1,x2,x3,x4 4个x坐标
dim y1,y2,y3,y4 4个y坐标
dim intr 圆的半径,这个半径不是真正的圆的半径,但是可以用来固定圆心的位置
--------------以下是代码开始--------------------
**********************************
*
*(x1,y1),(x2,y2) 和 圆心必须在 通过(0,0) 的 斜角45 的直线上
***********************************
pii=pi/180
if intangle > 360 then
intangle=intangle-360
end if
x1=10
y2=10
x2=250
y2=250
intr=(x1+x2)/2
************************************
*
*以下利用 三角形 公式 得到相应 point 的坐标
************************************
if intangle<135 then
角度不足 135
angle=intangle*pii
豆腐制作,都是精品
https://www.888.net 豆腐技术站
如转载,请保留完整版权信息
*/
前面我们讲了如何利用aspimage来制作柱图,柱图还好办,起码有关于长方形的函数,我们可以来
借用,但是如果是,饼图怎么办?
有的朋友不是说了,aspimage上不是有pie的函数吗?是呀,它是有,但是它的那个也太难用了。
豆腐没有办法,经过同事的帮助,利用我们高中学习的三角形公式(三角形公式?有没有搞错?)
终于做出了这样的函数,而且使用起来非常的方便。大家请看
function drawpie(arrnum,arrtext)
函数功能:根据指定的 数值和显示,他们均是 数组
**********以下是变量定义**************************
dim inttotal 当前
dim i
dim intsettledangle
dim arrcolor(6)
----------以下是代码开始--------------------------
设置颜色
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
以下开始 对数据进行处理
首先得到 数量的总数
inttotal=0
for i=0 to ubound(arrnum)
inttotal=inttotal + arrnum(i)
next
set image = server.createobject("aspimage.image")
设定 图象的 区域大小
image.maxx=300
image.maxy=300
生成渐进色
image.gradienttwoway rgb(41,137,204),vbwhite ,0,1
处理角度
intsettledangle=0
intrectstart=0
for i=0 to ubound(arrnum)
intangle=(arrnum(i)/inttotal)*360
一个一个的画 扇区,最终合成一个完整的 圆
set image=drawsinglepie(image, 360-intsettledangle,arrcolor(i))
在图象的最下方 对图象内容进行描述
image.backgroundcolor =arrcolor(i)
image.rectangle intrectstart+10*(i+1),250,intrectstart+10*(i+1)+10,260
image.textout arrtext(i), intrectstart+10*(i+1)+10,245,false
在图象的最下方 对图象内容进行描述
image.backgroundcolor =arrcolor(i)
image.rectangle intrectstart+10*(i+1),270,intrectstart+10*(i+1)+10,280
image.textout cstr(intangle) & "%", intrectstart+10*(i+1)+10, 265,false
intrectstart=intrectstart+50
intsettledangle=intsettledangle + intangle
next
image.filename=server.mappath("test.jpg")
image.saveimage
set image=nothing
response.write "<img src="/edu/uploadpic/2007-12/2007129133030166.jpg">"
end function
function drawsinglepie(image,intangle,intcolor)
函数功能: 根据指定的 角度和颜色 画一个矩形
**************以下是变量定义********************
const pi=3.1415926 圆周率
dim pii 经过180角转换后的圆周,弧度
dim x1,x2,x3,x4 4个x坐标
dim y1,y2,y3,y4 4个y坐标
dim intr 圆的半径,这个半径不是真正的圆的半径,但是可以用来固定圆心的位置
--------------以下是代码开始--------------------
**********************************
*
*(x1,y1),(x2,y2) 和 圆心必须在 通过(0,0) 的 斜角45 的直线上
***********************************
pii=pi/180
if intangle > 360 then
intangle=intangle-360
end if
x1=10
y2=10
x2=250
y2=250
intr=(x1+x2)/2
************************************
*
*以下利用 三角形 公式 得到相应 point 的坐标
************************************
if intangle<135 then
角度不足 135
angle=intangle*pii