问题描述
VB.net2005里面怎么实现折线趋势图,一组整数的数组
解决方案
解决方案二:
给你一段我曾经画电流电压曲线图的代码,你参考下DimGAsGraphics'=PictureBox1.CreateGraphics()DimbmpAsNewBitmap(PictureBox1.Width,PictureBox1.Height)G=Graphics.FromImage(bmp)DimPAsNewPen(Color.Green,2)G.DrawLine(P,0,300,733,300)G.DrawLine(P,600,0,600,349)G.DrawLine(P,0,300,5,297)G.DrawLine(P,0,300,5,303)G.DrawLine(P,600,0,597,5)G.DrawLine(P,600,0,603,5)P.Width=1DimiAsLongDimWAsLong=30Fori=1To19G.DrawLine(P,600-W*i,0,600-W*i,300)NextFori=1To28G.DrawLine(P,0,300-10*i,600,300-10*i)IfiMod5=0ThenG.DrawString(i*10,NewFont("宋体",9),Brushes.Red,605,300-i*10-4)G.DrawString(i,NewFont("宋体",9),Brushes.Cyan,640,300-i*10-4)G.DrawString(i*4,NewFont("宋体",9),Brushes.Yellow,675,300-i*10-4)EndIfNextG.DrawString("0",NewFont("宋体",9),Brushes.White,605,305)G.DrawString("时间",NewFont("宋体",9),Brushes.White,5,305)G.DrawString("电压(V)",NewFont("宋体",9),Brushes.Red,605,5)G.DrawString("电流(A)",NewFont("宋体",9),Brushes.Cyan,623,19)G.DrawString("功率(KW)",NewFont("宋体",9),Brushes.Yellow,655,32)Fori=0To19P.Color=Color.RedG.DrawLine(P,600-i*W,300-CSng(DY(i))/100,600-(i+1)*W,300-CSng(DY(i+1)/100))NextPictureBox1.Image=bmp
解决方案三:
你看看这个对你有没有用SubcreateBG()'绘制饼图DimheightAsInteger=200DimwidthAsInteger=200DimbmpAsNewBitmap(width,height)DimgAsGraphics=Graphics.FromImage(bmp)DimpenAsPen=NewPen(Color.Black)DimoutlineAsRectangle=NewRectangle(0,0,height-5,width-5)g.SmoothingMode=SmoothingMode.AntiAliasg.Clear(Color.White)'绘制饼图'绘制一个由边框(该边框由一对坐标、高度和宽度指定)定义的椭圆g.DrawEllipse(pen,outline)'填充由一对坐标、一个宽度、一个高度以及两条射线指定的椭圆所定义的扇形区的内部'关键在第二,三个参数:从x轴到扇形边1的度数;从扇形边1到边2的读书,下面绘制了各占90度的图'g.FillPie(NewSolidBrush(Color.Red),outline,-20.0F,90.0F)'g.FillPie(NewSolidBrush(Color.Yellow),outline,70.0F,150.0F)'g.FillPie(NewSolidBrush(Color.Blue),outline,220.0F,100.0F)'g.FillPie(NewSolidBrush(Color.Green),outline,320.0F,20.0F)g.FillPie(NewSolidBrush(Color.Red),outline,0.0F,90.0F)g.FillPie(NewSolidBrush(Color.Yellow),outline,90.0F,90.0F)g.FillPie(NewSolidBrush(Color.Blue),outline,180.0F,90.0F)g.FillPie(NewSolidBrush(Color.Green),outline,270.0F,90.0F)bmp.Save(Page.Response.OutputStream,ImageFormat.Jpeg)g.Dispose()bmp.Dispose()EndSubSubcreateZG()DimheightAsInteger=200DimwidthAsInteger=200DimspaceAsInteger=20'原点到左边和下边的距离DimintervalAsInteger=20'单位长度Dimmax_xAsInteger=8'x轴最大刻度Dimmax_yAsInteger=8DimbmpAsNewBitmap(width,height)DimgAsGraphics=Graphics.FromImage(bmp)DimpenAsPen=NewPen(Color.Black,1)Dimpen_chartAsPen=NewPen(Color.Blue,12)'定义一组数据DimarrData()AsDouble={5.21,3.34,2.5,7.65,6.54,1.2,2.32,6.48}DimiAsIntegerg.SmoothingMode=SmoothingMode.AntiAliasg.Clear(Color.White)'g.DrawLine(pen,point1,point2)'Pen对象,它确定线条的颜色、宽度和样式。'Point结构,它表示要连接的第一个点。'Point结构,它表示要连接的第二个点。g.DrawLine(pen,NewPoint(space,height-space),NewPoint(width,height-space))'x轴g.DrawLine(pen,NewPoint(space,0),NewPoint(space,height-space))'y轴'x轴上的刻度Fori=0Towidth-intervalStepintervalIfi<=max_x*intervalThen'g.DrawString(string,Font,Brush,PointF)'String对象,要绘制的字符串。'Font对象,它定义字符串的文本格式。'Brush对象,它确定所绘制文本的颜色和纹理。'PointF结构,它指定所绘制文本的左上角。'可以单独先定义变量drawString,drawFont,drawBrush,drawPointg.DrawString(i/interval,NewFont("Arail",9,FontStyle.Regular),SystemBrushes.WindowText,NewPointF(space+i-5,height-space))EndIfNext'y轴上的刻度Fori=0Toheight-intervalStepintervalIfi<=max_y*intervalTheng.DrawLine(pen,NewPoint(space,height-i-space),NewPoint(space+5,height-i-space))Ifi<>0Theng.DrawString(i/interval,NewFont("Arial",9,FontStyle.Regular),SystemBrushes.WindowText,NewPointF(space-12,height-space-i-6))EndIfEndIfNext'柱形图Fori=0ToUBound(arrData)g.DrawLine(pen_chart,NewPoint(space+(i+1)*interval,height-space-arrData(i)*interval),NewPoint(space+(i+1)*interval,height-space))Next'输出结果bmp.Save(Response.OutputStream,ImageFormat.Jpeg)g.Dispose()bmp.Dispose()EndSubSubcreateZXG()DimheightAsInteger=200DimwidthAsInteger=200DimspaceAsInteger=20'原点到左边和下边的距离DimintervalAsInteger=20'单位长度Dimmax_xAsInteger=8'x轴最大刻度Dimmax_yAsInteger=8DimbmpAsNewBitmap(width,height)DimgAsGraphics=Graphics.FromImage(bmp)DimpenAsPen=NewPen(Color.Black,1)Dimpen_chartAsPen=NewPen(Color.Blue,2)'在此处设置折线宽度和颜色'定义一组数据DimarrData()AsDouble={5.21,3.34,2.5,7.65,6.54,1.2,2.32,6.48}DimiAsIntegerg.SmoothingMode=SmoothingMode.AntiAliasg.Clear(Color.White)'g.DrawLine(pen,point1,point2)'Pen对象,它确定线条的颜色、宽度和样式。'Point结构,它表示要连接的第一个点。'Point结构,它表示要连接的第二个点。g.DrawLine(pen,NewPoint(space,height-space),NewPoint(width,height-space))'x轴g.DrawLine(pen,NewPoint(space,0),NewPoint(space,height-space))'y轴'x轴上的刻度Fori=0Towidth-intervalStepintervalIfi<=max_x*intervalThen'g.DrawString(string,Font,Brush,PointF)'String对象,要绘制的字符串。'Font对象,它定义字符串的文本格式。'Brush对象,它确定所绘制文本的颜色和纹理。'PointF结构,它指定所绘制文本的左上角。'可以单独先定义变量drawString,drawFont,drawBrush,drawPointg.DrawString(i/interval,NewFont("Arail",9,FontStyle.Regular),SystemBrushes.WindowText,NewPointF(space+i-5,height-space))EndIfNext'y轴上的刻度Fori=0Toheight-intervalStepintervalIfi<=max_y*intervalTheng.DrawLine(pen,NewPoint(space,height-i-space),NewPoint(space+5,height-i-space))Ifi<>0Theng.DrawString(i/interval,NewFont("Arial",9,FontStyle.Regular),SystemBrushes.WindowText,NewPointF(space-12,height-space-i-6))EndIfEndIfNext'-----------------------------------以上同画柱状图---------------------------------------------'画折线图Fori=0ToUBound(arrData)-1g.DrawLine(pen_chart,NewPoint(space+i*interval,height-space-arrData(i)*interval),NewPoint(space+(i+1)*interval,height-space-arrData(i+1)*interval))'g.DrawLine(pen_chart,NewPoint(space+(i+1)*interval,height-space-arrData(i)*interval),NewPoint(space+(i+1)*interval,height-space))Nextbmp.Save(Response.OutputStream,ImageFormat.Jpeg)g.Dispose()bmp.Dispose()EndSub
解决方案四:
以上是绘制饼图,柱状图和折线图的例子
解决方案五:
up
解决方案六:
使用方法PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickcreateBG()'画饼图EndSubPrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.ClickcreateZG()'画柱状图EndSubPrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.ClickcreateZXG()'画折线图EndSub
解决方案七:
谢谢各位,有没有控件来做这个,我这个趋势图比较复杂,XY轴都随时要变化
解决方案八:
MSChart控件可以动态的画图表,挺好用的。
解决方案九:
该回复于2008-11-05 18:56:33被版主删除
解决方案十:
up
解决方案十一:
TO:Caofusheng你的代码提示要声明,到底要声明哪些呢?比如:g.SmoothingMode=SmoothingMode.AntiAlias提示smoothingMode未声明,要如何声明呢?请指点,谢谢!
解决方案十二:
DimGAsGraphics'=PictureBox1.CreateGraphics()DimbmpAsNewBitmap(PictureBox1.Width,PictureBox1.Height)G=Graphics.FromImage(bmp)DimPAsNewPen(Color.Green,2)G.DrawLine(P,0,300,733,300)G.DrawLine(P,600,0,600,349)G.DrawLine(P,0,300,5,297)G.DrawLine(P,0,300,5,303)G.DrawLine(P,600,0,597,5)G.DrawLine(P,600,0,603,5)P.Width=1DimiAsLongDimWAsLong=30Fori=1To19G.DrawLine(P,600-W*i,0,600-W*i,300)NextFori=1To28G.DrawLine(P,0,300-10*i,600,300-10*i)IfiMod5=0ThenG.DrawString(i*10,NewFont("宋体",9),Brushes.Red,605,300-i*10-4)G.DrawString(i,NewFont("宋体",9),Brushes.Cyan,640,300-i*10-4)G.DrawString(i*4,NewFont("宋体",9),Brushes.Yellow,675,300-i*10-4)EndIfNextG.DrawString("0",NewFont("宋体",9),Brushes.White,605,305)G.DrawString("时间",NewFont("宋体",9),Brushes.White,5,305)G.DrawString("电压(V)",NewFont("宋体",9),Brushes.Red,605,5)G.DrawString("电流(A)",NewFont("宋体",9),Brushes.Cyan,623,19)G.DrawString("功率(KW)",NewFont("宋体",9),Brushes.Yellow,655,32)
解决方案十三:
to:taiji1982你这段代码运行没有错,不过,没有结果出来,怎么回事呢?
解决方案十四:
zedgraph控件也不错推荐一下
解决方案十五:
引用12楼limx001的回复:
to:taiji1982你这段代码运行没有错,不过,没有结果出来,怎么回事呢?
再顶一下!
解决方案:
不错,值得学习学习。