使用AspImage制作图形(二)

前面我们讲了如何利用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("http://edu.cnzz.cn/NewsInfo/test.jpg")
Image.SaveImage
set Image=nothing
Response.Write "<img src=http://edu.cnzz.cn/NewsInfo/test.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
x3=tan(angle-45*pii)*intR+intR '
y3=0
x4=0
y4=0
elseif intAngle=135 then
x3=(intR)*2
y3=intR
x4=0
y4=0
elseif intAngle<315 then
angle=intAngle*pii
intTemp=(intR/tan(angle-135*pii))-intR
x3=250+intTemp
y3=250
x4=0
y4=0
elseif intAngle=315 then
x3=(-intR)*2
y3=intR
x4=0
y4=0
else
angle=intAngle*pii
x3=tan(angle-45*pii)*intR+intR
y3=0
x4=0
y4=0
end if

Image.BackgroundColor =intColor
Image.Pie x1,y1,x2,y2,x3,y3,x4,y4

'Image.TextOut 360-intAngle,(125+x3)/2+20,(125+y3)/2+20,false
'Image.TextOut intRatio ,intPosX,intPosY,false

set DrawSinglePie=Image
end function

最后我们在利用 drawPie 中传递要显示的数据的数组就可以了。

时间: 2024-12-02 18:44:14

使用AspImage制作图形(二)的相关文章

使用AspImage制作图形(一)

很久没有给大家带来新的文章了,最近豆腐忙于公司的业务,怠慢了各位朋友,在这里给大家先说一声对不起了,没有办法,豆腐也要生活呀.aspImage是serverobjects站点上非常好的一个组件,它可以使我们利用Asp实现很多对于图形的处理功能.比如,豆腐在最近的项目中就需要对 费用进行统计,要画 柱图,饼图,等等,都需要用到这个组件.这个组件本身没有内置柱图的功能,我们需要自己做这样的函数,还是老规矩,我们先来看看代码吧.Function DrawPillar(arrNum)'这个函数的功能是

mac版 eclipse在使用AWT制作图形时,添加PopupMenu组件,右键没有用

问题描述 mac版 eclipse在使用AWT制作图形时,添加PopupMenu组件,右键没有用 下面是我的代码,在windows上面可以使用,右键也会出现东西,在mac上面没有用public class PopupMenuTest { private Frame f=new Frame(""测试""); PopupMenu pop=new PopupMenu(); MenuItem copyItem= new MenuItem(""复制&quo

c#制作pdf417二维条码怎么限定大小呢

问题描述 c#制作pdf417二维条码怎么限定大小呢 正在做pdf417二维条码的制作程序,数据量是不一定的,大概200个汉字左右,怎么才能限定条码在最大长5cm,高2cm的范围内 解决方案 PDF417二维条码/二维码

如何制作微信二维码指纹扫描图片

最近微信上的非常流行微信二维码指纹扫描加关注的方式,很多人都不太会,但是又想做,这里为大家讲解一下如何制作微信二维码指纹扫描图片.这类图片其实做起来不难,都是一些基础技巧,特别有素材的情况下,更是简单几步就能做出来了.下面我们就用素材合成一个动态的二维码扫描图片. 我们先看看最终效果: 素材: 更多素材链接: 访问链接:https://yunpan.cn/crVNETJhuAtNz   访问密码: 2714 素材不同,但方法是一样的下面开始教程:1.打开指纹素材 2.打开时间轴窗口:窗口-时间轴

Java程序中用JFreeChart制作图形报表

一.需求分析 我家领导认为,在是否嫁给我做老婆的问题上,应该有更加科学的决策模型.如果能够将每天的感情生活量化,且以时间为X轴,生成数据报表,就可以为她的决策提供数据支持.秉着以领导意志为导向的基本原则,开发了本软件,为家庭信息化建设提供新的思路. 二.系统概述 本系统的基本功能是,接收用户每天的输入并保存,月/季度/年度末生成数据折线图.周期环比柱状图.由于投入资金有限(不让我往外掏钱就已经很不错了),所以本软件的1.0版采用单机应用程序,使用Access数据库.如果市场推广情况良好,不排除推

Aspmaker网站后台制作工具(二):制作产品二级分类

网站后台建设中,经常要涉及到产品二级分类,三级分类;新闻二级分类,三级分类的问题.如果自己手写代码很不方便,但是Aspmaker网站后台制作工具可以很轻松的解决这个问题. 首先打开Aspmaker,按照上节课所讲导入数据库( Aspmaker网站后台制作工具详解(一):熟悉他 ),这里我设计了三个简单的表以方便演示:1,产品分类一(bigclass);2,产品分类二(smallclass);产品(product).字段入下截图 第二,导入成功后,软件界面左边会出现所有表好字段的菜单,如图: 第三

WPS文字中如何利用公式编辑器制作图形标注

一般在制作标注时,我们往往会用文本框加文字来实现,但是文本框的边框样式及内部边距都需要设置,操作起来非常繁琐.不仅如此,而且占据的空间也非常大,往往几个文本框叠加在一起,不易分辨.其实我们可以使用WPS公式编辑器设置图形标注. WPS文字中利用公式编辑器制作标注 ①首先画图,将图形设为文字"环绕"型; ②启动公式编辑器,输入标注文字; ③退出编辑器,如图 ④WPS认为此公式文字为"图片",并且默认为"嵌入"型,只需将它改成"环绕&quo

WPS演示中自己制作图形的技巧

  上面小编已经和大家讲了在WPS演示中插入图片的方法,但是在制作演示文稿的时候,常会插入一些形象的形状图片来代表某意义,下面小编就告诉大家如何在WPS演示中插入自选图片. 首先打开wps演示文稿,你可以在其中点击选择需要的图形,如下图所示: 自选图片 在上述操作中点击某个图形后,你的光标会变成十字形状. 按鼠标左键并且拖动光标就可以拖出你选择的图形了,同时你可以在菜单栏的形状样式中改变图形的颜色.轮廓及文本颜色. 以上就是WPS演示中插入自选图片的方法步骤.首先要选择你要的图形形状,然后在幻灯

WPS演示制作图形插入图片

  ①首先单击插入--形状,选择一款形状插入到幻灯片中. ②鼠标左键按住不放,画出图形,调整大小位置. ③右击图形,选择设置对象格式. ④在颜色中选择填充效果. ⑤点击选择图片按钮,选取本地图片打开. ⑥图片插入到图形里面,至此制作完成.