C#绘制曲线

18. July 2011

在网络上四处寻找C#绘制曲线,但是很多的文章要不就是晦涩难懂,要不就是一个文章N歌论坛转载,缺斤少两,最后让我们这些刚刚开始学习C#绘图感到束手无策啊。

好了再这里冰糕将这些网络上的东西简单的给大家陈诉吧。

  1. 在使用C# 作图我们需要的首先是建立工程这个相信大家都已经非常熟悉了。
  2. 接下来就是我们需要添加应用的命名空间...
    using System.Drawing.Drawing2D;
    using System.Drawing.Imaging;
  3. 然后就是代码的描述,
    我们首先比如在我们的窗体上面直接画..建议拖动一个Pannel吧。在这里就给大家介绍Pannel上去,这里我将Pannel 命名为 MY  然后双击Pannel,我们将得到下面的代码
     private void MY_panel_Paint(object sender, PaintEventArgs e)
            {}
  4. 我们在这个里面添加事件,如果我们添加随机数——这里就不给大家讲解随机数的生成了——这个网络上或者树上的资料都很全面的
    List<Point> Points = new List<Point>();
    int Start = 0;
      定义的全局变量。
  5. Graphics speedCurve = Masp_panel.CreateGraphics();
                
                Pen penSpeed = new Pen(Color.Red, 2);
                int YS = 210 - 3*(i /10);
                if (Start < 30)
                {
                    Points.Add(new Point(Start++ , YS));
                }
                else
                {
                    Points.Add(new Point (150,YS));
                }
                speedCurve.SmoothingMode = SmoothingMode.AntiAlias; //   
                speedCurve.SmoothingMode = SmoothingMode.HighQuality;//绘图模式默认为粗糙模式,将会出现锯齿   
    
  6. 用于限定代码的曲线的显示长度和范围,防止显示超过边界或者内存写满后死机
  7.           if (Points.Count >4)
                {
                    for (int m = 0; m < Points.Count; m++)
                    {                    
                        Point p = new Point(Points[m].X - 1, Points[m].Y);
                           Points.RemoveAt(m);
                        Points.Insert(m, p);                   
                    }  
                              
                    //Points.Clear();
                    //Start = 0;
                }
                if (Points.Count > 1)
                {
                    for(int  pli=0;pli<Points.Count;pli++)
                    {
    
                        Pen penTSpeed = new Pen(Color.FromArgb(40,40,40),10);
                        Point Pl = new Point(Points[pli].X, Points[pli].Y);
                        Point P2 = new Point(Points[pli].X, 210);
                        speedCurve.DrawLine(penTSpeed, Pl, P2);
                        penTSpeed.Dispose();
                        
                   
                    }
     
                }
                if (Points.Count > 1)
                {
                   speedCurve.DrawCurve(penSpeed, Points.ToArray());
                }
           
                #endregion
  8. 由于冰糕才开始学习做图代码有错误欢迎大家指出...
 
文章由  www.binggao.net 冰糕网随笔 冰糕编辑...转载请注明出处
     

 

Blog, software

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading