Domanda

Sto lavorando a un editor di mappe per un gioco XNA che sto progettando nel mio tempo libero. Le opere d'arte utilizzate nella mappa sono memorizzate su una singola trama e i rettangoli sono memorizzati con coordinate, larghezze ecc.

Nell'applicazione winforms posso aggiungere segmenti selezionando il segmento desiderato da una casella di riepilogo, che viene popolata dall'array di possibili segmenti.

Il problema è che vorrei essere in grado di mostrare un'anteprima del segmento selezionato e, poiché è memorizzato su una trama comune, non posso semplicemente impostare un riquadro per visualizzare l'immagine.

Esiste comunque l'uso delle informazioni sul rettangolo (.x, .y, .width, .height) per visualizzare solo la sezione dell'immagine in una finestra immagine, o per dividere la sezione in una bitmap e visualizzarla?

Molte grazie

Michael Allen

È stato utile?

Soluzione

Probabilmente vuoi dare un'occhiata alla libreria GDI. Utilizzando l'oggetto Image o Bitmap e Graphics.DrawImage () insieme otterrai ciò che stai cercando.

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);
}

Potresti anche essere interessato a utilizzare XNA all'interno di WinForm invece di utilizzare PictureBox e GDI. Non è ancora supportato al 100%, ma un tutorial su questo può essere trovato qui .

Altri suggerimenti

Puoi usare Graphics.DrawImage () e questo accetterà un rettangolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top