BitmapImage Classe

Définition

Fournit le type de source d’objet pratique pour les propriétés Image.Source et ImageBrush.ImageSource . Vous pouvez définir une bitmapImage à l’aide d’un URI (Uniform Resource Identifier) qui référence un fichier source d’image ou en appelant SetSourceAsync et en fournissant un flux.

public ref class BitmapImage sealed : BitmapSource
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.Activatable(Microsoft.UI.Xaml.Media.Imaging.IBitmapImageFactory, 65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class BitmapImage final : BitmapSource
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.Activatable(typeof(Microsoft.UI.Xaml.Media.Imaging.IBitmapImageFactory), 65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class BitmapImage : BitmapSource
Public NotInheritable Class BitmapImage
Inherits BitmapSource
<BitmapImage .../>
Héritage
Object Platform::Object IInspectable DependencyObject ImageSource BitmapSource BitmapImage
Attributs

Exemples

Voici un exemple d’utilisation d’un objet BitmapImage pour définir Image.Source en C#. Dans cet exemple, l’objet Image a été créé en XAML, mais n’a pas de source ni d’autres valeurs de propriété ; Au lieu de cela, ces valeurs sont fournies au moment de l’exécution lorsque l’image est chargée à partir du code XAML.

<Image Loaded="Image_Loaded"/>
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.
    // You don't need to set Height; the system maintains aspect ratio, and calculates the other
    // dimension, as long as one dimension measurement is provided.
    bitmapImage.UriSource = new Uri(img.BaseUri,"Assets/StoreLogo.png");
    img.Source = bitmapImage;
}

Remarques

Un BitmapImage peut être source à partir de ces formats de fichier image :

  • Groupe d’experts photographiques conjoints (JPEG)
  • Graphiques Réseau Portables (PNG)
  • carte de bits (BMP)
  • Format d’échange graphique (GIF)
  • Format de fichier image étiqueté (TIFF)
  • JPEG XR
  • icônes (ICO)

Si la source d’image est un flux, ce flux doit contenir un fichier image dans l’un de ces formats.

La classe BitmapImage représente une abstraction afin qu’une source d’image puisse être définie de manière asynchrone, mais toujours référencée dans le balisage XAML en tant que valeur de propriété, ou dans le code en tant qu’objet qui n’utilise pas de syntaxe attendue. Lorsque vous créez un objet BitmapImage dans le code, il n’a initialement aucune source valide. Vous devez ensuite définir sa source à l’aide de l’une de ces techniques :

  • Utilisez le constructeur BitmapImage(Uri) plutôt que le constructeur par défaut. Bien qu’il s’agit d’un constructeur, vous pouvez considérer cela comme ayant un comportement asynchrone implicite : BitmapImage ne sera pas prêt à être utilisé tant qu’il ne déclenche pas un événement ImageOpened qui indique une opération de jeu de sources asynchrone réussie.
  • Définissez la propriété UriSource . Comme avec l’utilisation du constructeur Uri , cette action est implicitement asynchrone et bitmapImage ne sera pas prête à être utilisée tant qu’elle n’aura pas déclenché un événement ImageOpened .
  • Utilisez SetSourceAsync. Cette méthode est explicitement asynchrone. Les propriétés où vous pouvez utiliser une bitmapImage, telle que Image.Source, sont conçues pour ce comportement asynchrone et ne lèveront pas d’exceptions si elles sont définies à l’aide d’une bitmapImage qui n’a pas encore de source complète. Au lieu de gérer les exceptions, vous devez gérer les événements ImageOpened ou ImageFailed directement sur BitmapImage ou sur le contrôle qui utilise la source (si ces événements sont disponibles sur la classe de contrôle).

ImageFailed et ImageOpened s’excluent mutuellement. Un événement ou l’autre est toujours déclenché chaque fois qu’un objet BitmapImage a sa valeur source définie ou réinitialisée.

BitmapImage et encodage

La prise en charge des codecs sous-jacents pour les fichiers image est fournie par Windows l’API WIC (Imaging Component) Windows. Pour plus d’informations sur des formats d’image spécifiques comme documentés pour les codecs, consultez Codecs WIC natifs. Pour plus d’informations sur les formats et sur l’utilisation de l’URI (Uniform Resource Identifier) pour accéder aux fichiers sources d’image provenant de ressources d’application, consultez Image et ImageBrush.

L’API pour Image, BitmapImage et BitmapSource n’inclut aucune méthode dédiée pour l’encodage et le décodage des formats multimédias. Toutes les opérations d’encodage et de décodage sont intégrées. Au maximum, les aspects de l’encodage ou du décodage s’affichent dans le cadre des données d’événement pour les événements de chargement. Si vous souhaitez effectuer un travail spécial avec l’encodage ou le décodage d’image, que vous pouvez utiliser si votre application effectue des conversions ou manipulations d’images, vous devez utiliser l’API disponible dans le Windows. Espace de noms Graphics.Imaging. Ces API sont également prises en charge par l’API Windows Imaging Component (WIC) dans Windows.

Images animées

À compter de Windows 10, version 1607, l’élément Image XAML prend en charge les images GIF animées. Lorsque vous utilisez bitmapImage comme source d’image, vous pouvez accéder à l’API BitmapImage pour contrôler la lecture de l’image GIF animée.

  • Utilisez la propriété Lecture automatique, qui a la valeur true par défaut, pour spécifier si une bitmap animée est lue dès qu’elle se charge.
  • Utilisez la propriété IsAnimatedBitmap pour vérifier si une bitmap est animée.
  • Utilisez la propriété IsPlaying avec les méthodes Play et Stop pour contrôler la lecture d’une bitmap animée.

Note

Pour la plupart des applications, nous vous recommandons de définir la lecture automatique sur false si UISettings.AnimationsEnabled a la valeur false pour prendre en charge les besoins d’accessibilité des utilisateurs. Ne faites pas cela si le contenu du GIF animé est important pour l’utilisation de votre application.

Si votre application s’exécute sur des versions de Windows 10 antérieures à la version 1607, vous devez utiliser la classe ApiInformation pour vérifier la présence de ces membres avant de les utiliser. Pour plus d’informations, consultez Code adaptatif de version : Utilisez de nouvelles API tout en conservant la compatibilité avec les versions précédentes.

Cet exemple montre comment utiliser un GIF animé. Un bouton permet à l’utilisateur de démarrer ou d’arrêter l’animation. Cet exemple utilise le code adaptatif de version pour qu’il puisse s’exécuter sur toutes les versions de Windows 10. Sur les versions antérieures à la version 1607, la première image du GIF est affichée, mais elle n’est pas animée.

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Image Loaded="Image_Loaded">
        <Image.Source>
            <BitmapImage x:Name="imageSource"
                         UriSource="Assets/example.gif"
                         ImageOpened="imageSource_ImageOpened"/>
        </Image.Source>
    </Image>

    <AppBarButton x:Name="playButton"
              Icon="Play"
              Visibility="Collapsed"
              Click="playButton_Click"/>
</Grid>
// Set the AutoPlay property.
private void Image_Loaded(object sender, RoutedEventArgs e)
{
    if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.Media.Imaging.BitmapImage", "AutoPlay") == true)
    {
        imageSource.AutoPlay = false;
    }
}

// Show the play/stop button if the image is animated.
private void imageSource_ImageOpened(object sender, RoutedEventArgs e)
{
    var bitmapImage = (BitmapImage)sender;
    // At this point you can query whether the image is animated or not.
    if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.Media.Imaging.BitmapImage", "IsAnimatedBitmap") 
        && bitmapImage.IsAnimatedBitmap == true)
    {
        // Enable the play button
        playButton.Visibility = Visibility.Visible;
    }
}

// Play or stop the animated bitmap.
void playButton_Click(object sender, RoutedEventArgs e)
{
    if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.Media.Imaging.BitmapImage", "IsPlaying"))
    {
        // You can call the Play and Stop methods safely because is the IsPlaying property is
        // present, these methods are also present.
        if (imageSource.IsPlaying == true)
        {
            playButton.Icon = new SymbolIcon(Symbol.Play);
            imageSource.Stop();
        }
        else
        {
            playButton.Icon = new SymbolIcon(Symbol.Stop);
            imageSource.Play();
        }
    }
}

Pour plus d’exemples, consultez l’exemple de lecture GIF animée.

Constructeurs

Nom Description
BitmapImage()

Initialise une nouvelle instance de la classe BitmapImage .

BitmapImage(Uri)

Initialise une nouvelle instance de la classe BitmapImage à l’aide de l’URI (Uniform Resource Identifier) fourni.

Propriétés

Nom Description
AutoPlay

Obtient ou définit une valeur qui indique si une image animée doit être lue dès qu’elle se charge.

AutoPlayProperty

Identifie la propriété de dépendance De lecture automatique .

CreateOptions

Obtient ou définit bitmapCreateOptions pour une bitmapImage.

CreateOptionsProperty

Identifie la propriété de dépendance CreateOptions .

DecodePixelHeight

Obtient ou définit la hauteur à utiliser pour les opérations de décodage d’image.

DecodePixelHeightProperty

Identifie la propriété de dépendance DecodePixelHeight .

DecodePixelType

Obtient ou définit une valeur qui détermine comment les valeurs DecodePixelWidth et DecodePixelHeight sont interprétées pour les opérations de décodage.

DecodePixelTypeProperty

Identifie la propriété de dépendance DecodePixelType .

DecodePixelWidth

Obtient ou définit la largeur à utiliser pour les opérations de décodage d’image.

DecodePixelWidthProperty

Identifie la propriété de dépendance DecodePixelWidth .

Dispatcher

Retourne null toujours dans une application du Kit de développement logiciel (SDK) d’application Windows. Utilisez DispatcherQueue à la place.

(Hérité de DependencyObject)
DispatcherQueue

Obtient le DispatcherQueue résultat auquel cet objet est associé. Représente DispatcherQueue une installation qui peut accéder au DependencyObject thread d’interface utilisateur même si le code est initié par un thread non-interface utilisateur.

(Hérité de DependencyObject)
IsAnimatedBitmap

Obtient une valeur qui indique si une image est animée.

IsAnimatedBitmapProperty

Identifie la propriété de dépendance IsAnimatedBitmap .

IsPlaying

Obtient une valeur qui indique si une image animée est en cours de lecture.

IsPlayingProperty

Identifie la propriété de dépendance IsPlaying .

PixelHeight

Obtient la hauteur de la bitmap en pixels.

(Hérité de BitmapSource)
PixelWidth

Obtient la largeur de la bitmap en pixels.

(Hérité de BitmapSource)
UriSource

Obtient ou définit l’URI (Uniform Resource Identifier) du fichier source graphique qui a généré cette BitmapImage.

UriSourceProperty

Identifie la propriété de dépendance UriSource .

Méthodes

Nom Description
ClearValue(DependencyProperty)

Efface la valeur locale d’une propriété de dépendance.

(Hérité de DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Retourne toute valeur de base établie pour une propriété de dépendance, qui s’applique dans les cas où une animation n’est pas active.

(Hérité de DependencyObject)
GetValue(DependencyProperty)

Retourne la valeur effective actuelle d’une propriété de dépendance à partir d’un DependencyObject.

(Hérité de DependencyObject)
Play()

Démarre l’animation d’une image animée.

ReadLocalValue(DependencyProperty)

Retourne la valeur locale d’une propriété de dépendance, si une valeur locale est définie.

(Hérité de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Inscrit une fonction de notification pour écouter les modifications apportées à une dependencyProperty spécifique sur cette instance DependencyObject .

(Hérité de DependencyObject)
SetSource(IRandomAccessStream)

Définit l’image source d’une BitmapSource en accédant à un flux. La plupart des appelants doivent utiliser SetSourceAsync à la place.

(Hérité de BitmapSource)
SetSourceAsync(IRandomAccessStream)

Définit l’image source d’une BitmapSource en accédant à un flux et en traitant le résultat de manière asynchrone.

(Hérité de BitmapSource)
SetValue(DependencyProperty, Object)

Définit la valeur locale d’une propriété de dépendance sur un DependencyObject.

(Hérité de DependencyObject)
Stop()

Termine l’animation d’une image animée.

UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Annule une notification de modification qui a été précédemment inscrite en appelant RegisterPropertyChangedCallback.

(Hérité de DependencyObject)

Événements

Nom Description
DownloadProgress

Se produit lorsqu’une modification significative s’est produite lors de la progression du téléchargement du contenu BitmapImage .

ImageFailed

Se produit lorsqu’une erreur est associée à la récupération ou au format d’image.

ImageOpened

Se produit lorsque la source de l’image est téléchargée et décodée sans échec. Vous pouvez utiliser cet événement pour déterminer la taille d’une image avant de la rendre.

S’applique à

Voir aussi