2009-05-28 10 views
7

Ich verwende eine Klassenbibliothek, die eine große ImageSource> 3000x3750 Pixel generiert. Ich möchte diese ImageSource in BitmapImage konvertieren, so dass ich die Vorteile von DecodePixelWidth oder DecodePixelHeight nutzen kann, anstatt sie jedes Mal neu zu skalieren, wenn dieses Image generiert wird.Konvertieren von ImageSource in BitmapImage - WPF

Ich muss dieses Bild zuerst für den Benutzer anzeigen, und die meisten Benutzer haben eine Bildschirmauflösung von 1024x768, ich binde diese ImageSource an ein Image-Steuerelement für diese, aber es kann bemerkt werden, wie "schwer" es ist.

Wie kann ich das tun? Oder was ist die beste Lösung für diesen Fall?

danke!

Antwort

1

Der Typ BitmapImage erbt BitmapSource und letztlich ImageSource (beide abstrakte Klassen). Sie müssen überprüfen, was der tatsächliche Typ Ihres Objekts ist, d. H. Überprüfen Sie object.GetType().Name. Wenn Sie Glück haben, kann es tatsächlich ein Objektzurückgeben, und Sie müssen es einfach auf diesen Typ umwandeln, bevor Sie es als solches verwenden können.

+0

Ich tat dies, und es gibt eine ImageSource zurück ... –

+0

@Hans: Haben Sie den genauen Anruf verwendet, den ich in meinem Beitrag angegeben habe? Es sollte wirklich den * tatsächlichen * Typ des Objekts zurückgeben, nicht den Basistyp (oder Typ der Variablen). – Noldorin

+0

@Noldorin: Ja, ich tat, die Dokumentation sagt auch der Rückgabetyp ist ImageSource ... danke –

16

Ich weiß, es ist eine alte Post, aber versuchen Sie tun:

myBitmapImage = myImageSource as BitmapImage; 

, das gut funktioniert.

+1

Das Gegenteil davon funktionierte für mich, von BitmapImage in ImageSource umgewandelt, indem Sie es umwandeln. Vielen Dank! –

+0

Es funktioniert nicht für mich. – Butzke

+0

Wenn die Besetzung hier fehlschlägt, geschieht dies stillschweigend. Wenn also 'myImageSource' nicht in' BitmapImage' umgewandelt werden kann, dann wird 'myBitmapImage'' null', stattdessen würde ich 'myBitmapImage = (BitmapImage) myImageSource;' verwenden, da es mir zumindest eine Ausnahme geben würde, wenn die Hölle bricht lose. – Peter

Verwandte Themen