Рендеринг раздела изображения в растровое изображение C # Winforms
-
10-07-2019 - |
Вопрос
Я работаю над редактором карт для игры 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 (), и он будет принимать прямоугольник.