int rowNumber = 200, colNumber = 200;
            int[,] a = new int[rowNumber, colNumber];
            double cellsize = 1;
            int lineID = 1, col, j, row;
            double x1 = XX, y1 =XX ;
            double x2 = XX, y2 = XX;
            double k = (y2 - y1) / (x2 - x1), b = y1 - x1 * k;
            int col1 = (int)(x1 / cellsize), col2 = (int)(x2 / cellsize);
            int row1 = (int)(y1 / cellsize), row2 = (int)(y2 / cellsize);            if (k > 1 || k < -1)
            {
                if (col1 < col2)
                    for (col = col1; col < col2; col++)
                    {
                        double y0 = col * k + b;
                        double x = col + 1;
                        double y = x * k + b;
                        for (double d = Math.Floor(y0); d < y; d += 1)
                          {
                            int yz = (int)(d);
                            a[yz, col] = lineID;
                            Console.WriteLine("a[{0},{1}]={2}", yz, col, a[yz, col]);
                          }
                     }
                else
                   {
                      for (col = col1; col > col2; col--)
                        {
                          double y0 = col * k + b;
                          double x = col - 1;
                          double y = x * k + b;
                          for (double d = Math.Floor(y0); d > y; d -= 1)
                            {
                              int yz = (int)(d);
                              a[yz, col] = lineID;
                              Console.WriteLine("a[{0},{1}]={2}", yz, col, a[yz, col]);
                             }
                         }
                    }
              }
           
           else
             {
                   if (row1 < row2)
                      {
                        for (row = row1; row < row2; row++)
                         {
                           double x0 = (row - b) / k;
                           double y = row + 1;
                           double x = (y - b) / k;
                           for (double d = Math.Floor(x0); d < x; d += 1)
                            {
                               int xz = (int)(d);
                               a[row, xz] = lineID;
                               Console.WriteLine("a[{0},{1}]={2}", row, xz, a[row, xz]);
                             }
                          }  
                       }
                   else 
                       {
                          for (row = row1; row > row2; row--)
                           {
                            double x0 = (row - b) / k;
                            double y = row - 1;
                            double x = (y - b) / k;
                            for (double d = Math.Floor(x0); d > x; d -= 1)
                               {
                                 int xz = (int)(d);
                                 a[row, xz] = lineID;
                                 Console.WriteLine("a[{0},{1}]={2}", row, xz, a[row, xz]);
                                }
                            }
                        }
                 
            }        }
程序是想计算由(X1,Y1)到(X2,Y2)连成的线段经过了哪些格子。。然后给这些格子赋值lineID。。但是程序里面if(col1>col2)和if(row1>row2)部分好像有问题,每当执行这个部分返回的结果都不对。希望高手指点一下。。脑袋都被绕晕了谢谢