使用AspImage制作圖形(一)
發(fā)表時間:2024-02-19 來源:明輝站整理相關軟件相關文章人氣:
[摘要]/*豆腐制作,都是精品http://www.asp888.net 豆腐技術站如轉載,請保留完整版權信息*/很久沒有給大家?guī)硇碌奈恼铝,最近豆腐忙于公司的業(yè)務,怠慢了各位朋友,在這里給大家先說一聲對不起了,沒有辦法,豆腐也要生活呀。aspImage是serverobjects站點上非常好的一個組件...
/*
豆腐制作,都是精品
http://www.asp888.net 豆腐技術站
如轉載,請保留完整版權信息
*/
很久沒有給大家?guī)硇碌奈恼铝,最近豆腐忙于公司的業(yè)務,怠慢了各位朋友,在這里給大家先說一聲
對不起了,沒有辦法,豆腐也要生活呀。
aspImage是serverobjects站點上非常好的一個組件,它可以使我們利用Asp實現(xiàn)很多對于圖形的處理功能。
比如,豆腐在最近的項目中就需要對 費用進行統(tǒng)計,要畫 柱圖,餅圖,等等,都需要用到這個組件。
這個組件本身沒有內(nèi)置柱圖的功能,我們需要自己做這樣的函數(shù),還是老規(guī)矩,我們先來看看代碼吧。
Function DrawPillar(arrNum)
'這個函數(shù)的功能是 生成 一個 柱圖
'**************以下是變量定義********************
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個月,產(chǎn)生 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("http://www.okasp.com/techinfo/test.jpg")
Image.SaveImage
set Image=nothing
Response.Write "<img src=http://www.okasp.com/techinfo/test.jpg>"
End Function
function GetMaxY(arrNum)
'這個函數(shù)的功能是 得到數(shù)組中最大 的數(shù)字
'***************以下是變量定義************
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的實例,現(xiàn)在
我們就可以利用AspImage提供給我們的動人功能了。
Image.MaxX=620
Image.MaxY=300
我們可以設定我們需要畫的圖形的區(qū)域。
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個月,產(chǎn)生 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
這端代碼是最終生成柱圖的代碼,具體我就不解釋了。