我采样得到一组300个左右的数据,请问怎么将它绘制成曲线呢。需要绘制到PictureBox或者Panel面板控件上。对GDI+绘图了解很少,还请各位给些方法,最好能给点实例。
    0.0602
    0.0767
    0.0964
    0.1195
    0.1465
  ..........
    0.2541
    0.3000
    0.3513
    0.4084
    0.4714
    1.1993
    1.3167
    1.4390
    1.5656
    1.6960

解决方案 »

  1.   

    你想幹嘛,直接用工業控件顯示就可以了,你不知道OPC?連上去就OKhttp://www.iocomp.com
      

  2.   

    Bitmap bMap = new Bitmap(705, 234);
                Graphics gph = Graphics.FromImage(bMap);
                gph.Clear(Color.White);            PointF cPt = new PointF(50, 200);//坐标原点   
                PointF cPtbottomright = new PointF(690, 200);//  
                PointF cPtupleft = new PointF(50, 30);//   
                PointF cPtupright = new PointF(690, 30);//  
                gph.DrawString("宽巷模糊度变换情况", new Font("宋体", 10),
                 Brushes.Black, new PointF((cPt.X + cPtupright.X) / 2 - 40, cPtupleft.Y - 14));//图表标题    
                //画X轴    
                gph.DrawLine(Pens.Black, cPt.X, cPt.Y, cPtbottomright.X, cPtbottomright.Y);//下x轴
                gph.DrawLine(Pens.Black, cPtupleft.X, cPtupleft.Y, cPtupright.X, cPtupright.Y);//上x轴            gph.DrawLine(Pens.Black, cPt.X, cPt.Y, cPtupleft.X, cPtupleft.Y);//左y轴
                gph.DrawLine(Pens.Black, cPtbottomright.X, cPtbottomright.Y, cPtupright.X, cPtupright.Y);//右y轴            OBSrecord obs = new OBSrecord();
                int i, j;
                i = Convert.ToInt32(textBox5.Text);
                maxwidelane = int.MinValue;
                minwidelane = int.MaxValue; ;
                for (j = 0; j < list.Count; j++)
                {
                    obs = (OBSrecord)list[j];
                    if (obs.sv[i])
                    {
                        double N_ii = (Constants.f1 * obs.pseudorange_P1[i] + Constants.f2 * obs.pseudorange_P2[i]) / (Constants.f1 + Constants.f2) - (obs.pseudorange_L1[i] - obs.pseudorange_L2[i]) * Constants.speedoflight / (Constants.f1 - Constants.f2);
                        if (N_ii > maxwidelane)
                            maxwidelane = N_ii;
                        if (N_ii < minwidelane)
                            minwidelane = N_ii;
                    }
                }
                PointF ppt = new PointF();
                PointF pt = new PointF();
                ppt = cPt;
                for (j = 0; j < list.Count; j++)
                {
                    obs = (OBSrecord)list[j];
                    pt.X = cPt.X + (cPtbottomright.X - cPt.X) * j / list.Count;
                    if (obs.sv[i])
                    {
                        double N_ii = (Constants.f1 * obs.pseudorange_P1[i] + Constants.f2 * obs.pseudorange_P2[i]) / (Constants.f1 + Constants.f2) - (obs.pseudorange_L1[i] - obs.pseudorange_L2[i]) * Constants.speedoflight / (Constants.f1 - Constants.f2);                    pt.Y = cPt.Y - ((float)(N_ii) - (float)minwidelane) / ((float)maxwidelane - (float)minwidelane) * (cPt.Y - cPtupleft.Y);
                    }
                    else
                        pt.Y = ppt.Y;
                    gph.DrawLine(Pens.Red, ppt, pt);
                    ppt = pt;
                }
                this.pictureBox3.Image = bMap;
                bmpsatellete = bMap;
                b_widelane = true;
      

  3.   

    作图情况基本思路就是这样,你把list的数据换成你自己的就好了。有这么几步:
    1.建立bitmap
    2.用上bitmap建立graphics
    3.用graphics的函数,和你的数据画图
    4.picturebox.image=bimmap显示
      

  4.   

    还有一个困惑就是我不可能每个点都建立一个Point[]结构,这样上百个数据就得建立上百个Point[],然后再来调用绘图方法。请问具体是怎么用循环来实现的呢?