Rendre une section d'une image en Bitmap C # Winforms
-
10-07-2019 - |
Question
Je travaille sur un éditeur de carte pour un jeu XNA que je conçois pendant mon temps libre. Les œuvres d'art utilisées dans la carte sont stockées sur une seule texture et les rectangles sont stockés avec leurs coordonnées, leurs largeurs, etc.
Dans l’application Winforms, je peux ajouter des segments en sélectionnant le segment que je veux dans une liste déroulante, qui est renseignée à partir du tableau des segments possibles.
Le problème est que je voudrais pouvoir afficher un aperçu du segment sélectionné et, comme il est stocké sur une texture commune, je ne peux pas simplement définir un cadre d’image pour afficher l’image.
Est-il possible d’utiliser les informations rectangulaires (.x, .y, .width, .height) pour n’afficher que la section de l’image dans une boîte à images, ou pour convertir la section en une image bitmap et l’afficher?
Merci beaucoup
Michael Allen
La solution
Vous voudrez probablement vous pencher sur la bibliothèque GDI. L’utilisation conjointe de l’objet Image ou Bitmap et de Graphics.DrawImage () vous donnera ce que vous cherchez.
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);
}
Vous pourriez également être intéressé par l’utilisation de XNA dans votre WinForm au lieu d’utiliser PictureBoxes et GDI. Ce n’est pas encore supporté à 100%, mais vous pouvez trouver un tutoriel sur ici .
Autres conseils
Vous pouvez utiliser Graphics.DrawImage () et accepter un rectangle.