예제 #1
0
        public static int[,] RenderObject(PointF[] points, int[,] takenOrFree, float imageWidth, float imageHeight)
        {
            System.Drawing.Point[] boxPoints = new System.Drawing.Point[4];
            List <IEnumerable <System.Drawing.Point> > renderObject = new List <IEnumerable <System.Drawing.Point> >();

            for (int i = 0; i < points.Length; i++)
            {
                boxPoints[i] = WhichBox(points[i], takenOrFree.GetLength(0), takenOrFree.GetLength(1), imageWidth, imageHeight);
            }

            boxPoints = boxPoints.OrderBy(s => s.X).ThenBy(s => s.Y).ToArray();

            foreach (System.Drawing.Point p in boxPoints)
            {
                takenOrFree[p.Y, p.X] = 1;
            }

            renderObject.Add(Bresenham.RenderLine(boxPoints[0], boxPoints[1]));
            renderObject.Add(Bresenham.RenderLine(boxPoints[0], boxPoints[2]));
            renderObject.Add(Bresenham.RenderLine(boxPoints[1], boxPoints[3]));
            renderObject.Add(Bresenham.RenderLine(boxPoints[2], boxPoints[3]));

            foreach (IEnumerable <System.Drawing.Point> po in renderObject)
            {
                foreach (System.Drawing.Point p in po)
                {
                    //System.Console.WriteLine(p.X+" / "+p.Y);
                    takenOrFree[p.Y, p.X] = 1;
                }
            }
            return(takenOrFree);
        }