2009-07-31 10 views
0

Je suis en train de créer un éditeur de niveau dans WPF pour un jeu 2D basé sur des tuiles. J'essaye de comprendre la meilleure manière de charger le dossier Image de tileset et rend chaque tuile dans l'endroit approprié pour reconstituer la carte.Dessiner une sous-région d'un BitmapSource

Actuellement, je charge le Image en tant que BitmapSource, et je dérive de la classe Canvas pour le contrôle qui affiche la carte. Je surcharge la méthode OnRender afin que je puisse obtenir un DrawingContext. Cependant, DrawingContext.DrawImage ne semble pas avoir une surcharge appropriée qui dessine seulement un sous-image d'une image; On dirait que je dois dessiner l'image entière.

Que dois-je utiliser si je souhaite dessiner des sous-échantillons d'un Image sur un Canvas? Ou devrais-je utiliser autre chose qu'un Canvas?

Répondre

0

Voici comment je le ferais:

protected override void OnRender(DrawingContext dc) 
{ 
    BitmapImage source = new BitmapImage(); 
    source.BeginInit(); 
    source.UriSource = new Uri(@"pack://application:,,,/YourProject;component/YourImage.jpg"); 
    source.SourceRect = new Int32Rect(0, 0, 200, 200); 
    source.EndInit(); 

    dc.DrawImage(source, Rect.Parse("0, 0, 200, 200")); 
    base.OnRender(dc); 
} 

La propriété qui fait cela pour vous est BitmapImage.SourceRect.

Questions connexes