Рендеринг раздела изображения в растровое изображение C # Winforms

StackOverflow https://stackoverflow.com/questions/837423

Вопрос

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

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

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

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

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

Майкл Аллен

Это было полезно?

Решение

Вы, вероятно, хотите заглянуть в библиотеку 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%, но руководство по этому вопросу можно найти здесь .

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top