Renderizar una sección de una imagen en un Winmap C # Winforms
-
10-07-2019 - |
Pregunta
Estoy trabajando en un Editor de mapas para un juego XNA que estoy diseñando en mi tiempo libre. Las obras de arte utilizadas en el mapa se almacenan en una sola textura y los rectángulos se almacenan con coordenadas y anchos, etc.
En la aplicación winforms puedo agregar segmentos seleccionando el segmento que deseo de un cuadro de lista, que se completa a partir de la matriz de segmentos posibles.
El problema es que me gustaría poder mostrar una vista previa del segmento seleccionado y, dado que está almacenado en una textura común, simplemente no puedo configurar un cuadro de imagen para mostrar la imagen.
¿Hay alguna forma de usar la información del rectángulo (.x, .y, .width, .height) para mostrar solo la sección de la imagen en un cuadro de imagen, o para borrar la sección en un mapa de bits y mostrar eso?
Muchas gracias
Michael Allen
Solución
Probablemente desee buscar en la biblioteca GDI. El uso del objeto Image o Bitmap y Graphics.DrawImage () juntos obtendrá lo que está buscando.
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);
}
También podría estar interesado en usar XNA dentro de su WinForm en lugar de usar PictureBoxes y GDI. Todavía no es 100% compatible, pero se puede encontrar un tutorial sobre eso aquí .
Otros consejos
Puede usar Graphics.DrawImage () y eso aceptará un Rectángulo.