public bool Init2()
        {
            Coordinate coordinate = new Coordinate();


            double dx, dy;

            coordinate = SnapLeftTopcoordinate;
            dy         = (SnapRightBottomcoordinate.Y - SnapLeftTopcoordinate.Y) / (2 * RowCount - 3);
            dx         = (SnapRightBottomcoordinate.X - SnapLeftTopcoordinate.X) / (ColCount - 1);
            for (int i = 0; i < ColCount; i++)
            {
                for (int j = 0; j < RowCount; j++)
                {
                    TrayCell trayCell = new TrayCell();
                    trayCells.Add(trayCell);
                    int K = (4 * (j / 2) + j % 2);
                    trayCells[i * RowCount + j].Snapcoordinate.Y = SnapLeftTopcoordinate.Y + (4 * (j / 2) + j % 2) * dy;
                    trayCells[i * RowCount + j].Snapcoordinate.X = SnapLeftTopcoordinate.X + i * dx;
                    trayCells[i * RowCount + j].Snapcoordinate.U = coordinate.U;
                    trayCells[i * RowCount + j].Snapcoordinate.Z = coordinate.Z;
                    //trayCells[i * ColCount + j].Snapcoordinate = coordinate;
                }
            }

            coordinate = PickLeftTopcoordinate;
            dy         = (PickRightBottomcoordinate.Y - PickLeftTopcoordinate.Y) / (2 * RowCount - 3);
            dx         = (PickRightBottomcoordinate.X - PickLeftTopcoordinate.X) / (ColCount - 1);
            for (int i = 0; i < ColCount; i++)
            {
                for (int j = 0; j < RowCount; j++)
                {
                    int K = (4 * (j / 2) + j % 2);
                    trayCells[i * RowCount + j].Pickcoordinate.Y = PickLeftTopcoordinate.Y + K * dy;
                    trayCells[i * RowCount + j].Pickcoordinate.X = PickLeftTopcoordinate.X + i * dx;
                    trayCells[i * RowCount + j].Pickcoordinate.U = coordinate.U;
                    trayCells[i * RowCount + j].Pickcoordinate.Z = coordinate.Z;
                    //trayCells[i * ColCount + j].Pickcoordinate = coordinate;
                }
            }

            coordinate = PlaceLeftTopcoordinate;
            dy         = (PlaceRightBottomcoordinate.Y - PlaceLeftTopcoordinate.Y) / (2 * RowCount - 3);
            dx         = (PlaceRightBottomcoordinate.X - PlaceLeftTopcoordinate.X) / (ColCount - 1);
            for (int i = 0; i < ColCount; i++)
            {
                for (int j = 0; j < RowCount; j++)
                {
                    int K = (4 * (j / 2) + j % 2);
                    trayCells[i * RowCount + j].Placecoordinate.Y = PlaceLeftTopcoordinate.Y + K * dy;
                    trayCells[i * RowCount + j].Placecoordinate.X = PlaceLeftTopcoordinate.X + i * dx;
                    trayCells[i * RowCount + j].Placecoordinate.U = coordinate.U;
                    trayCells[i * RowCount + j].Placecoordinate.Z = coordinate.Z;
                }
            }

            return(true);
        }
        public bool Init()
        {
            Coordinate coordinate = new Coordinate();

            trayCells.Clear();
            double dx, dy;

            coordinate = SnapLeftTopcoordinate;
            dy         = RowCount > 1 ? (SnapRightBottomcoordinate.Y - SnapLeftTopcoordinate.Y) / (RowCount - 1) : 0;
            dx         = ColCount > 1 ? (SnapRightBottomcoordinate.X - SnapLeftTopcoordinate.X) / (ColCount - 1) : 0;
            for (int i = 0; i < ColCount; i++)
            {
                for (int j = 0; j < RowCount; j++)
                {
                    TrayCell trayCell = new TrayCell();
                    trayCells.Add(trayCell);
                    trayCells[i * RowCount + j].Snapcoordinate.Y = SnapLeftTopcoordinate.Y + j * dy;
                    trayCells[i * RowCount + j].Snapcoordinate.X = SnapLeftTopcoordinate.X + i * dx;
                    trayCells[i * RowCount + j].Snapcoordinate.U = coordinate.U;
                    trayCells[i * RowCount + j].Snapcoordinate.Z = coordinate.Z;
                    //trayCells[i * ColCount + j].Snapcoordinate = coordinate;
                }
            }

            coordinate = PickLeftTopcoordinate;
            dy         = RowCount > 1 ? (PickRightBottomcoordinate.Y - PickLeftTopcoordinate.Y) / (RowCount - 1) : 0;
            dx         = ColCount > 1 ? (PickRightBottomcoordinate.X - PickLeftTopcoordinate.X) / (ColCount - 1) : 0;
            for (int i = 0; i < ColCount; i++)
            {
                for (int j = 0; j < RowCount; j++)
                {
                    trayCells[i * RowCount + j].Pickcoordinate.Y = PickLeftTopcoordinate.Y + j * dy;
                    trayCells[i * RowCount + j].Pickcoordinate.X = PickLeftTopcoordinate.X + i * dx;
                    trayCells[i * RowCount + j].Pickcoordinate.U = coordinate.U;
                    trayCells[i * RowCount + j].Pickcoordinate.Z = coordinate.Z;
                    //trayCells[i * ColCount + j].Pickcoordinate = coordinate;
                }
            }

            coordinate = PlaceLeftTopcoordinate;
            dy         = RowCount > 1 ? (PlaceRightBottomcoordinate.Y - PlaceLeftTopcoordinate.Y) / (RowCount - 1) : 0;
            dx         = ColCount > 1 ? (PlaceRightBottomcoordinate.X - PlaceLeftTopcoordinate.X) / (ColCount - 1) : 0;
            for (int i = 0; i < ColCount; i++)
            {
                for (int j = 0; j < RowCount; j++)
                {
                    trayCells[i * RowCount + j].Placecoordinate.Y = PlaceLeftTopcoordinate.Y + j * dy;
                    trayCells[i * RowCount + j].Placecoordinate.X = PlaceLeftTopcoordinate.X + i * dx;
                    trayCells[i * RowCount + j].Placecoordinate.U = coordinate.U;
                    trayCells[i * RowCount + j].Placecoordinate.Z = coordinate.Z;
                }
            }

            return(true);
        }