您的位置:程序门 -> .net技术 -> asp.net



有没有人做过类似曲线图或折线图的东西啊


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


有没有人做过类似曲线图或折线图的东西啊
发表于:2007-08-05 20:10:00 楼主
如题
        是否可以发份样本     或代码给我啊     :)
邮箱:c1945@163.com
先谢谢各位拉
发表于:2007-08-05 20:10:121楼 得分:0
自己先顶个再     :)
发表于:2007-08-05 20:35:502楼 得分:0
1.crystal   report)
2.reporting   services
3.vml
4.gdi+
-----------------
你想要哪种?~~
发表于:2007-08-05 20:40:363楼 得分:0
汗     我都不太清楚
        他们各有什么不同吗   /?
发表于:2007-08-05 20:41:214楼 得分:0
我们是用owc做各类图表的
发表于:2007-08-05 20:44:255楼 得分:0
我是想动态的生成曲线图
      恩     就想哪个验证码一样    
我做的是一个     关于基金的东西

你们看看     http://fund3.eastmoney.com/510181.html
这个把
发表于:2007-08-05 20:47:116楼 得分:0
用水晶报表最简单了~~,它那个生成图片了,不知道用什么做的~~
发表于:2007-08-05 20:50:157楼 得分:0
他这是用什么做的啊   ?
      能看得出不   ?
想了一天的     都想不出什么简单     又好用的方法
发表于:2007-08-06 14:00:558楼 得分:0
不是把     怎么就没一个人有做过呢?
发表于:2007-08-07 10:19:569楼 得分:0

图表组件wschart4.6(dll版)  
http://www.wave12.com/web/home.asp   示例
发表于:2007-08-07 11:26:0210楼 得分:0
使用owc11吧,画出来的效果很不错,可以实现饼图,柱图,曲线图等等.在我的blog里面有一个具体的实例,你可以参考一下,希望对你有帮助.
http://blog.csdn.net/zhanglei5415/archive/2007/07/23/1702494.aspx
发表于:2007-08-07 11:28:1611楼 得分:0
带图形的实例,请看这篇文章
http://blog.csdn.net/zhanglei5415/archive/2007/07/16/1693333.aspx
发表于:2007-08-07 11:40:0312楼 得分:0
用office自带的控件就行,现成的。
发表于:2007-08-07 11:42:0213楼 得分:0
有很多三方插件的。
发表于:2007-08-07 11:59:0114楼 得分:0
第三方控件
发表于:2007-08-07 12:03:4515楼 得分:0
//获取数据
dataset   ds=getdata1(param1,param2,param3,param4);//自己替换掉
//建立图形对象
graphics   objgraphics;//建立画板对象
bitmap   objbitmap=new   bitmap(1000,500);//建立位图对象
objgraphics=graphics.fromimage(objbitmap);//根据位图对象建立画板对象
objgraphics.clear(color.white);//设置画板对象背景色
//绘制坐标轴
pointf   point1=new   pointf(30,420);//定义坐标轴原点
pointf   point2=new   pointf(970,420);//定义横坐标终点
pointf   point3=new   pointf(30,30);//定义纵坐标终点
pointf   point4=new   pointf(25,40);//定义箭头左侧点
pointf   point5=new   pointf(35,40);//定义箭头右侧点
pointf   line1start=new   pointf(30,320);//定义水平线100单位起点
pointf   line1end=new   pointf(970,320);//定义水平线100单位终点
pointf   line2start=new   pointf(30,220);//定义水平线200单位起点
pointf   line2end=new   pointf(970,220);//定义水平线200单位终点
pointf   line3start=new   pointf(30,120);//定义水平线300单位起点
pointf   line3end=new   pointf(970,120);//定义水平线300单位终点
objgraphics.drawline(pens.black,point1,point2);//绘制横坐标
objgraphics.drawline(pens.black,point1,point3);//绘制纵坐标
objgraphics.drawline(pens.black,point3,point4);//绘制左侧箭头线
objgraphics.drawline(pens.black,point3,point5);//绘制右侧箭头线
objgraphics.drawline(pens.yellowgreen,line1start,line1end);//绘制水平线100单位
objgraphics.drawline(pens.yellowgreen,line2start,line2end);//绘制水平线200单位
objgraphics.drawline(pens.yellowgreen,line3start,line3end);//绘制水平线300单位
//获取数据
float[]   arrvalues=new   float[ds.tables[0].rows.count];
float   flag=0;//获取最大的数值
for(int   i=0;i <ds.tables[0].rows.count;i++)
{
arrvalues[i]=float.parse(ds.tables[0].rows[i][0].tostring());
if(arrvalues[i]> flag)
{
flag=arrvalues[i];
}
}
int   pos=flag.tostring().indexof( ". ");//获取最大值中小数点的索引位置
int   count1=0;
int   countparam1=1;//缩放参数1
int   count2=1;
float   countparam2=1;//缩放参数2
//最大值大于1000(最大值中小数点索引位置大于3)
if(pos> 3)
{
count1=pos-3;
for(int   i=0;i <count1;i++)
{
countparam1=countparam1*10;
}
}
//最大值的整数位数
for(int   i=1;i <pos;i++)
{
count2=count2*10;
}
//最大值最高位的数值大于4的情况下,缩放参数2的值为0.4
if(flag/count2> 4)
{
countparam2=float.parse( "0.4 ");
}
//使用缩放参数调整要显示的数值
for(int   i=0;i <ds.tables[0].rows.count;i++)
{
arrvalues[i]=countparam2*float.parse(ds.tables[0].rows[i][0].tostring())/countparam1+1;//加参数以避免实体超出图像范围,加1以避免未达到一个单位的矩形无法显示
}
//使用缩放参数调整坐标轴刻度值
float   scale1=100*countparam1/countparam2;
float   scale2=200*countparam1/countparam2;
float   scale3=300*countparam1/countparam2;
if(param5== "1 "   ¦ ¦   param5== "3 ")
{
//绘制调整后的坐标轴刻度值
pointf   scalepoint1=new   pointf(30,320);
pointf   scalepoint2=new   pointf(30,220);
pointf   scalepoint3=new   pointf(30,120);
objgraphics.drawstring(scale1.tostring(),new   font( "宋体 ",9),brushes.black,scalepoint1);
objgraphics.drawstring(scale2.tostring(),new   font( "宋体 ",9),brushes.black,scalepoint2);
objgraphics.drawstring(scale3.tostring(),new   font( "宋体 ",9),brushes.black,scalepoint3);
}

//画折线图
for(int   j=0;j <arrvalues.length;j++)
{
if(j> 0)
{
int   k=j-1;
pointf   pointa=new   pointf((j*65)+60,420-arrvalues[j]);//定义起始点
pointf   pointb=new   pointf((k*65)+60,420-arrvalues[k]);//定义结束点
objgraphics.drawline(pens.blue,pointa,pointb);//画折线
}
//标出数据
pointf   dataleg=new   pointf((j*65)+50,400-arrvalues[j]);
objgraphics.drawstring(ds.tables[0].rows[j][0].tostring(),new   font( "宋体 ",9),brushes.red,dataleg);
//标出名称
pointf   nameleg=new   pointf((j*65)+50,440);
string   name=ds.tables[0].rows[j][1].tostring();
string   name2= " ";
char[]   nameelements=name.tochararray();
for(int   i=0;i <nameelements.length;i++)
{
if(i==3   &&   nameelements.length> 3)
{
name2=name2+nameelements[i].tostring()+ "\n ";//在第四个字后换行
}
else
{
name2=name2+nameelements[i].tostring();
}
}
objgraphics.drawstring(name2,new   font( "宋体 ",9),brushes.black,nameleg);
}
//绘制三角形便于突出显示各点
for(int   j=0;j <arrvalues.length;j++)
{
float   parama=float.parse( "8.66 ");
float   paramb=float.parse( "5 ");
pointf   points0=new   pointf((j*65)+60,420-arrvalues[j]-parama);
pointf   points1=new   pointf((j*65)+60-parama,420-arrvalues[j]+paramb);
pointf   points2=new   pointf((j*65)+60+parama,420-arrvalues[j]+paramb);
pointf[]   points=new   pointf[3]{points0,points1,points2};
objgraphics.drawpolygon(pens.green,points);
objgraphics.fillpolygon(new   solidbrush(color.green),points);
}
objbitmap.save(response.outputstream,system.drawing.imaging.imageformat.gif);
发表于:2007-08-07 15:26:3116楼 得分:0
zedgraph,这个是开源的控件,感觉不错
发表于:2007-08-07 16:50:1517楼 得分:0
dundas   chart   for   windows   forms   -   enterprise   eval   (vs   2005)
发表于:2007-08-07 17:17:0518楼 得分:0
用chart控件   很简单   可以直接绑定     而且做出来很漂亮


快速检索

最新资讯
热门点击