private void Cal(System.Drawing .Point [] pt) { double max=0.00,min=0.00; int maxIdex=0,minIndex=0; System.Collections .Hashtable linePoint=new Hashtable ();//点集 System.Collections .Hashtable kPoint=new Hashtable ();//斜率 int i=0; foreach(Point tempt in pt) { linePoint[i]=tempt; i++; } /计算斜率 while (i> 0) { Point tempt1=(Point)linePoint[i-1]; Point tempt2=(Point)linePoint[i]; kPoint[i]=(double)(tempt2.Y -tempt1.Y )/(tempt2.X -tempt1.X); } 找出斜率最大和最小的值 foreach(DictionaryEntry item in kPoint) { if(max <(double)item.Value ) { max=(double)item.Value ; maxIdex=(int)item.Key; } if(min> (double)item.Value ) { min=(double)item.Value ; minIndex=(int)item.Key; } } string maxk=kPoint[maxIdex].ToString ();//最大斜率 Point maxBegin=(Point)linePoint[maxIdex-1];//最大斜率起点 Point maxEnd=(Point)linePoint[maxIdex];//最大斜率终点
string mink=kPoint[minIndex].ToString ();//最小斜率 Point minBegin=(Point)linePoint[minIndex-1];//最小斜率起点 Point minEnd=(Point)linePoint[minIndex];//最大小斜率终点 }