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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top