Image.Source Property

Ruft die Quelle des Bilds ab oder legt diese fest.

Syntax


public ImageSource Source { get; set; }


<Image Source="uri"/>

XAML Values

uri

Der URI-Speicherort der Quelldatei des Bilds. In der XAML-Syntax können Sie angeben, was einer zu einer relativen URI entsprechen soll, die relativ zu einer Basis-URI ist. Der Basis-URI wird auf Basis des Speicherorts der XAML-Datei interpretiert, die den URI lädt, und verwendet das ms-appx:-Schema implizit. Weitere Informationen finden Sie in den Hinweisen.

Eigenschaftswert

Typ: ImageSource

Ein Objekt, das die Bildquelldatei für das gezeichnete Bild darstellt. Normalerweise legen Sie dies mit einem BitmapImage-Objekt fest, das mit dem URI (Uniform Resource Identifier) erstellt wurde, der den Pfad zu einer gültigen Bildquelldatei beschreibt, oder mit einem Stream aus einer Speicherdatei gefüllt wird.

Hinweise

Das Festlegen der Source-Eigenschaft ist grundsätzlich eine asynchrone Aktion. Da dies eine Eigenschaft ist, gibt es keine Awaitable-Syntax. Für die meisten Szenarien müssen Sie jedoch nicht mit den asynchronen Aspekten des Ladens der Bildquelldatei interagieren. Das Framework wartet, bis die Bildquelle zurückgegeben wird, und wendet das Layout erneut an, sobald die Bildquelldatei verfügbar ist.

Das Festlegen einer Quelle auf einen URI-Wert, der nicht in eine gültige Imagequelldatei aufgelöst werden kann, löst keine Ausnahme aus. Stattdessen wird ein ImageFailed-Ereignis ausgelöst. Decodierungsfehler lösen außerdem das ImageFailed-Ereignis aus. Sie können einen ImageFailed-Handler schreiben und im Image-Objekt anfügen, um diesen Fall zu erkennen, und Sie können möglicherweise ErrorMessage in den Ereignisdaten verwenden, um die Art des Fehlers zu bestimmen. Wenn Sie zudem sicherstellen möchten, dass eine Image-Quelldatei korrekt geladen wurde, können Sie das ImageOpened-Ereignis im Image-Element behandeln.

Einstellen der Quelle in XAML

Wenn Sie die Source-Eigenschaft als Attribut in XAML festlegen, legen Sie die Source-Eigenschaft mithilfe einer URI fest. Dieses Verhalten verlässt sich auf die Konvertierung des zugrunde liegenden Typs, der die Zeichenfolge als URI verarbeitet, und ruft die Entsprechung des BitmapImage(Uri)-Konstruktors auf. Der XAML-Parser interpretiert alle Zeichenfolgen, die einen relativen URI darstellen, und verwendet dabei den Basis-URI der zu analysierenden XAML-Seite. Wenn Sie zum Beispiel einen "Images/myimage.png"-Wert in XAML angeben, wird diese Zeichenfolge als Suffix des relativen Pfads interpretiert, das an den Speicherort des Basis-URI innerhalb des Anwendungspakets angefügt wird, in dem die XAML-Seite selbst vorhanden ist.


<Image Width="200" Source="Images/myimage.png" />

Festlegen von Source im Code

Wenn Sie ein Image-Objekt im Code erstellen, benötigt Image.Source ein BitmapImage oder BitmapSource (keinen URI) im Code. Wenn die Quelle App-Inhalt ist, verwenden Sie den BitmapImage-Konstruktor, der einen URI annimmt. Die Windows-Runtime erzwingt, dass URIs absolut sind. Sie können keine relativen URIs im Windows-Runtime-Code verwenden.

Wie Sie den URI erstellen, variiert abhängig davon, wie und wo Sie die Imagequelldatei innerhalb der App verpacken. Sie können einen Uri mit einer der Signaturen erstellen, die einen URI aus einer absoluten Basis und einem relativen Teil/Pfad erstellt. In C# oder Microsoft Visual Basic ist der URI-Typ als System.Uri ausgelegt, sodass Sie die System.Uri-Konstruktoren verwenden müssen, die eine Zeichenfolge als zweiten Parameter übernehmen. Verwenden Sie in Visual C++-Teilerweiterungen (C++/CX) Uri(String,String). Rufen Sie für den ersten Parameter BaseUri auf der Image-Instanz auf, auf der Sie die Quelle festlegen. Dies erstellt einen URI mit dem ms-appx:-Schema und fügt den Pfad hinzu, der Teil des Speicherorts der XAML-Seite ist. Beispiel: CapturedPhoto.Source = new BitmapImage(new Uri(this.BaseUri, "Assets/placeholder-sdk.png"));

Wenn Sie das http:-Schema oder das https:-Schema verwenden, verwenden Sie einen Uri-Konstruktor, der eine Zeichenfolge übernimmt, und geben Sie darin den Gesamten URI einschließlich Schema an. Wenn Sie einen .NET Framework System.Uri-Wert und eine Signatur, die einen UriKind-Wert benötigt, verwenden, müssen Sie Absolute angeben.

Im Folgenden findet sich ein Beispiel für das Festlegen der Image.Source in C#. In diesem Beispiel wurde das Image-Objekt in XAML erstellt, verfügt jedoch nicht über eine Quelle oder andere Eigenschaftswerte. Stattdessen werden diese Werte zur Laufzeit bereitgestellt, wenn Image von XAML geladen wird.


void Image_Loaded(object sender, RoutedEventArgs e)
{
    Image img = sender as Image; 
    BitmapImage bitmapImage = new BitmapImage();
    img.Width = bitmapImage.DecodePixelWidth = 80; //natural px width of image source
    // don't need to set Height, system maintains aspect ratio, and calculates the other
    // dimension, so long as one dimension measurement is provided
    bitmapImage.UriSource = new Uri(img.BaseUri,"Images/myimage.png");
}

Eine andere Option besteht in der Verwendung von Bildquelldateien, die mithilfe des ms-appdata:-Schemas im lokalen Speicher der Anwendung platziert werden.

Verwenden Sie SetSourceAsync, wenn Sie Bildquellen verwenden, die nur zur Laufzeit verfügbar sind, um ein Image festzulegen, wie z. B. Bilddateien, die der Benutzer auswählen kann, indem ein FileOpenPicker auf der Benutzeroberfläche angezeigt wird.


FileOpenPicker open = new FileOpenPicker(); 
// Open a stream for the selected file 
StorageFile file = await open.PickSingleFileAsync(); 
// Ensure a file was selected 
if (file != null) 
{ 
    using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read)) 
    { 
        // Set the image source to the selected bitmap 
         BitmapImage bitmapImage = new BitmapImage(); 
         bitmapImage.DecodePixelWidth = 600; //match the target Image.Width, not shown
         await bitmapImage.SetSourceAsync(fileStream); 
         Scenario2Image.Source = bitmapImage; 
    } 
}

Sie können das ImageOpened-Ereignis behandeln, wenn Zeitprobleme beim Abrufen oder Decodieren der Bildquelle auftreten und möglicherweise Alternativinhalte benötigt werden, die bis zur Verfügbarkeit der Bildquelle angezeigt werden. Beispielcode finden Sie im Beispiel zu XAML-Bildern.

Imagequellen und -Skalierung

Wenn Sie auf Bilder im App-Paket verweisen, sollten Sie die Bildquellen in mehreren empfohlenen Größen erstellen, damit die App immer optimal aussieht, wenn Windows 8 sie in der Größe ändert. Beim Angeben einer Source für ein Image als URI können Sie eine Benennungskonvention verwenden, die automatisch auf die richtige Bildressource für die aktuelle Skalierung, wie sie vom System während der Laufzeit erkannt wird, verweist. Einzelheiten zur Namenskonvention und weitere Informationen finden Sie unter Schnellstart: Verwenden von Datei- oder Imageressourcen.

Weitere Informationen dazu, wie eine Skalierung entworfen wird, finden Sie unter Richtlinien für die Skalierung zur Pixeldichte oder unter den Hinweisen in Image.

Bildquellen und Ressourcenqualifizierer

Sie können die automatische Behandlung für den Zugriff auf nicht qualifizierte Ressourcen mit aktuellen Skalierungs- und Kulturqualifizierern oder die ResourceManager-Qualifizierer und ResourceMap-Qualifizierer für Kultur und Skalierung verwenden, um die Ressourcen direkt zu erhalten. Weitere Informationen finden Sie unter Ressourcenverwaltungssystem bzw. den Hinweisen unter Image. Weitere Informationen zu App-Ressourcen und zum Packen von Bildquellen in einer App finden Sie unter Definieren von Apps-Ressourcen.

Anzeigen von Bildern aus der Bildbibliothek

Einige Apps definieren UI, die Benutzern einigen oder den ganzen Inhalt ihrer Bildbibliothek anzeigt. Sie können das Image-Element verwenden, um die tatsächlichen Bilder auf der Benutzeroberfläche anzuzeigen. Der Inhalt der Bildbibliothek steht entweder als StorageFolderQueryResult oder als zurückgegebener Wert eines StorageFolder.GetFilesAsync-Aufrufs zur Verfügung. Um ein einzelnes Bild anzuzeigen, verwenden Sie die StorageFile-Objekte vom Auflisten der Bibliothek, und rufen Sie OpenAsync auf, um einen Stream abzurufen. Verwenden Sie diesen Stream, um die Bildquelle festzulegen, indem Sie eine neue BitmapSource erstellen und SetSourceAsync mithilfe des Streams aufrufen. Beachten Sie, dass Sie eine Funktion angeben müssen, um auf die Bildbibliothek programmgesteuert zuzugreifen.

Anforderungen

Mindestens unterstützter Client

Windows 8

Mindestens unterstützter Server

Windows Server 2012

Namespace

Windows.UI.Xaml.Controls
Windows::UI::Xaml::Controls [C++]

Metadaten

Windows.winmd

Siehe auch

Image
ImageFailed
Schnellstart: Image und ImageBrush

 

 

Anzeigen:
© 2014 Microsoft