Получить часть изображения - C#

Узнай цену своей работы

Формулировка задачи:

Имеется вот такая вот картинка (смотрите ниже), как программно выбирать нужную картинку и зарисовывать её для дальнейшей разработки ? (GDI +)

Решение задачи: «Получить часть изображения»

textual
Листинг программы
/* Матрица значений.
 * Каждое значение - это порядковый номер тайла в исходном изображении,
 * считываемом слева направо и сверху вниз, начиная с нуля.
 * Например, для исходника 10х10 тайлов значение 12 означает третий слева тайл во втором ряду сверху:
 * 00 01 02 03 04 05 06 07 08 09
 * 10 11 12 13 14 15 16 17 18 19
 * и так далее.
*/
int[,] field = new int[,]
    {
        { 01, 02, 01, 02, 01, 02, 01, 02, 01, 02 },
        { 02, 00, 00, 00, 00, 00, 00, 07, 00, 01 },
        { 01, 00, 00, 00, 00, 00, 03, 03, 00, 02 },
        { 02, 00, 00, 03, 03, 00, 00, 00, 00, 01 },
        { 01, 08, 00, 00, 00, 00, 00, 00, 00, 02 },
        { 02, 01, 01, 02, 01, 01, 02, 01, 02, 01 }
    };
 
// Размер тайла.
int tileS = 30;
 
// Установка цвета, используемого для прозрачности.
var keyColor = Color.FromArgb(0xFF03E4);
var attr = new ImageAttributes();
attr.SetColorKey(keyColor, keyColor);
 
// Регион для отрисовки.
var dst = new Rectangle(0, 0, tileS, tileS);
 
// Исходное изображение.
var source = Resources.brock;
 
// canvas в данном примере - панель размером 300х180 пикселей (10х6 тайлов 30 пикселей каждый).
using (var gfx = canvas.CreateGraphics()) {
    for (int i = 0; i < field.GetLength(0); i++) {
        for (int j = 0; j < field.GetLength(1); j++) {
            // Координата Х нужного тайла в исходном изображении.
            int srcX = tileS * field[i, j] % source.Width;
 
            // Координата Y нужного тайла в исходном изображении.
            int srcY = tileS * field[i, j] / source.Width;
 
            // Координаты для отрисовки текущего тайла.
            dst.X = j * tileS; dst.Y = i * tileS;
 
            // Отрисовка.
            gfx.DrawImage(source, dst, srcX, srcY, tileS, tileS, GraphicsUnit.Pixel, attr);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы