Perić Željko
Привет Кастури,
Я разработал простую игру-головоломку 3 x 3 slider, и вот метод, который должен дать вам представление о том, как разделить изображение на 3 x 3 плитки. Если вы проанализируете его, то не должно возникнуть проблем с изменением программного кода для разделения изображения на 8 х 8 плиток.
Оригинальная бесплатная программа, с открытым исходным кодом на этот URL адрес :
Игра Головоломка - Perić Željko Smederevo[^]
void Initialize_Tiles()
{
//
// Cut original image to nine rectangular peaces
// that have identical dimensions and set them to
// the elements of table 'Puzzle_Tiles'.
//
// Placed by it's indexes on fixed positions
// inside Puzzle_Table, in the below shown order,
// they constitute original image.
//
// 1 2 3
// 4 5 6
// 7 8 9
//
// Original image
Bitmap Original_Image;
// Original image pixel format
PixelFormat Pixel_Format;
// Tile rectangle
RectangleF Tile;
int Tile_Height;// Tile height
int Tile_Width; // Tile width
// Set new original image and it's pixel format
Original_Image = new Bitmap(BackgroundImage);
Pixel_Format = Original_Image.PixelFormat;
// Set new Tile
Tile_Height = Original_Image.Height/3;
Tile_Width = Original_Image.Width/3;
Tile = new RectangleF();
Tile.Width = Tile_Width;
Tile.Height = Tile_Height;
//
// Set values to elements of table Puzzle_Tiles
//
// 0. Tile, empty tile
Puzzle_Tiles[0].Image = null;
// 1. Tile
Tile.X = 0;
Tile.Y = 0;
Puzzle_Tiles[1].Image = Original_Image.Clone(Tile,Pixel_Format);
// 2. Tile
Tile.X = Tile_Width;
Tile.Y = 0;
Puzzle_Tiles[2].Image = Original_Image.Clone(Tile,Pixel_Format);
// 3. Tile
Tile.X = 2*Tile_Width;
Tile.Y = 0;
Puzzle_Tiles[3].Image = Original_Image.Clone(Tile,Pixel_Format);
// 4. Tile
Tile.X = 0;
Tile.Y = Tile_Height;
Puzzle_Tiles[4].Image = Original_Image.Clone(Tile,Pixel_Format);
// 5. Tile
Tile.X = Tile_Width;
Tile.Y = Tile_Height;
Puzzle_Tiles[5].Image = Original_Image.Clone(Tile,Pixel_Format);
// 6. Tile
Tile.X = 2*Tile_Width;
Tile.Y = Tile_Height;
Puzzle_Tiles[6].Image = Original_Image.Clone(Tile,Pixel_Format);
// 7. Tile
Tile.X = 0;
Tile.Y = 2*Tile_Height;
Puzzle_Tiles[7].Image = Original_Image.Clone(Tile,Pixel_Format);
// 8. Tile
Tile.X = Tile_Width;
Tile.Y = 2*Tile_Height;
Puzzle_Tiles[8].Image = Original_Image.Clone(Tile,Pixel_Format);
// 9. Tile
Tile.X = 2*Tile_Width;
Tile.Y = 2*Tile_Height;
Puzzle_Tiles[9].Image = Original_Image.Clone(Tile,Pixel_Format);
}
Как вы можете заметить, существует таблица Puzzle_Tiles, одномерный массив, тип PictureBox с его экземпляром Image, который используется для запоминания smaler peaces исходного изображения. Его объявление находится в начале основного класса и является глобальной переменной :
// Table 'Puzzle_Tiles' contains nine
// pictures cropped from original image.
PictureBox [] Puzzle_Tiles;
И инициализация при методе Initialize_Tables см. исходный программный код при
Игра Головоломка - Perić Željko Smederevo[
^] :
int position;
// Table 'Puzzle_Tiles' contains nine
// pictures cropped from original image.
Puzzle_Tiles = new PictureBox[10];
Puzzle_Tiles.Initialize();
// Set initial values for table elements
position = 0;
for(position=0;position<10;position++)
{
Puzzle_Tiles[position] = new PictureBox();
Puzzle_Tiles[position].Image = null;
}
Я думаю, что этого достаточно для вас, чтобы решить проблему.
Всего наилучшего,
Желько Перич
F-ES Sitecore
Проверьте, в каком году были опубликованы вопросы, прежде чем тратить слишком много времени и усилий на то, чтобы дать ответ!