2009-07-31 8 views
0

Ich erstelle einen Level-Editor in WPF für ein 2D-Kachel-basiertes Spiel. Ich versuche herauszufinden, die beste Möglichkeit, die Tileset Image Datei zu laden und jede Kachel an der entsprechenden Stelle zu rendern, um die Karte zu rekonstruieren.Eine Subregion einer BitmapSource zeichnen

Zur Zeit lade ich die Image als , und ich bin von der Canvas Klasse für die Steuerung, die die Karte anzeigt abgeleitet. Ich überschreibe die OnRender Methode, damit ich eine DrawingContext bekommen kann. DrawingContext.DrawImage scheint jedoch keine angemessene Überladung zu haben, die nur eine Unterrect eines Bildes zeichnet; es sieht so aus, als müsste ich das ganze Bild zeichnen.

Was soll ich verwenden, wenn ich Teilbilder einer Image auf eine Canvas zeichnen möchte? Oder sollte ich etwas anderes als Canvas verwenden?

Antwort

0

Hier ist, wie ich es tun würde:

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

Die Eigenschaft, die dies für Sie tut BitmapImage.SourceRect ist.

Verwandte Themen