Рендеринг раздела изображения в растровое изображение C # Winforms - PullRequest
2 голосов
/ 08 мая 2009

Я работаю над редактором карт для игры XNA, которую я создаю в свободное время. Произведения искусства, используемые на карте, хранятся на одной текстуре, а прямоугольники хранятся с координатами и шириной и т. Д.

В приложении winforms я могу добавлять сегменты, выбирая нужный сегмент из списка, который заполняется из массива возможных сегментов.

Проблема в том, что я хотел бы показать предварительный просмотр выбранного сегмента, и, поскольку он хранится на общей текстуре, я не могу просто установить графический блок для отображения изображения.

Можно ли в любом случае использовать информацию о прямоугольнике (.x, .y, .width, .height) для отображения только части изображения в графическом окне или для преобразования раздела в растровое изображение и его отображения? *

Большое спасибо

Майкл Аллен

Ответы [ 2 ]

9 голосов
/ 08 мая 2009

Вы, вероятно, хотите заглянуть в библиотеку GDI. Совместное использование объекта Image или Bitmap и Graphics.DrawImage () позволит получить то, что вы ищете.

private void DrawImageRectRect(PaintEventArgs e)
{

    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");

    // Create rectangle for displaying image.
    Rectangle destRect = new Rectangle(100, 100, 450, 150);

    // Create rectangle for source image.
    Rectangle srcRect = new Rectangle(50, 50, 150, 150);
    GraphicsUnit units = GraphicsUnit.Pixel;

    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect, srcRect, units);
}

Вас также может заинтересовать использование XNA в WinForm вместо PictureBoxes и GDI. Это еще не поддерживается на 100%, но учебник по этому вопросу можно найти здесь .

0 голосов
/ 08 мая 2009

Вы можете использовать Graphics.DrawImage (), и он будет принимать прямоугольник.

...