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 un 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 ou 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 de 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

Une image Bitmap peut être source à partir des formats de fichier image suivants :

  • Joint Photographic Experts Group (JPEG)
  • format PNG (Portable Network Graphics)
  • image bitmap (BMP)
  • format GIF (Graphics Interchange Format)
  • format TIFF (Tagged Image File Format)
  • JPEG XR
  • icônes (ICO)

Si la source d’image est un flux, ce flux est censé 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 la syntaxe pouvant être 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 des techniques suivantes :

  • Utilisez le constructeur BitmapImage(Uri) plutôt que le constructeur par défaut. Bien qu’il s’agisse 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 n’aura pas déclenché un événement ImageOpened qui indique une opération de jeu de sources asynchrone réussie.
  • Définissez la propriété UriSource . Comme pour l’utilisation du constructeur URI , cette action est implicitement asynchrone, et BitmapImage ne sera pas prêt à être utilisé tant qu’il n’aura pas déclenché un événement ImageOpened .
  • Utilisez SetSourceAsync. Cette méthode est explicitement asynchrone. Les propriétés dans lesquelles vous pouvez utiliser un BitmapImage, telles que Image.Source, sont conçues pour ce comportement asynchrone et ne lèvent 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 événement 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 l’API WIC (Windows Imaging Component) dans Windows. Pour plus d’informations sur des formats d’image spécifiques, tels que 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 et, au plus, feront émerger les aspects de l’encodage ou du décodage 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’images, que vous pouvez utiliser si votre application effectue des conversions ou des manipulations d’images, vous devez utiliser l’API disponible dans l’espace de noms Windows.Graphics.Imaging . Ces API d’imagerie peuvent être utilisées par une application UWP en C++, C#, Visual Basic ou une application Windows à l’aide de JavaScript. Ces API sont également prises en charge par le composant WiC (Windows Imaging Component) de Windows 8.

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 image bitmap animée est lue dès qu’elle se charge.
  • Utilisez la propriété IsAnimatedBitmap pour case activée 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 image bitmap animée.

Notes

Pour la plupart des applications, nous vous recommandons de définir la lecture automatique sur false si UISettings.AnimationsEnabled a la valeur false, afin de prendre en charge les besoins d’accessibilité des utilisateurs. Ne le faites pas si le contenu du GIF animé est important pour la facilité d’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 case activée la présence de ces membres avant de les utiliser. Pour plus d’informations, consultez Code adaptatif de version : utiliser 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 du code adaptatif de version afin 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 s’affiche, 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

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

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 AutoPlay .

CreateOptions

Obtient ou définit bitmapCreateOptions pour une Image Bitmap.

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’images.

DecodePixelHeightProperty

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

DecodePixelType

Obtient ou définit une valeur qui détermine la façon dont 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’images.

DecodePixelWidthProperty

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

Dispatcher

Retourne null toujours dans une application SDK d'application Windows. Utilisez DispatcherQueue à la place.

(Hérité de DependencyObject)
DispatcherQueue

Obtient le DispatcherQueue auquel cet objet est associé. DispatcherQueue représente une installation qui peut accéder au DependencyObject sur le thread d’interface utilisateur, même si le code est initié par un thread autre que l’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 l'image bitmap en pixels.

(Hérité de BitmapSource)
PixelWidth

Obtient la largeur de l'image 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 Image Bitmap.

UriSourceProperty

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

Méthodes

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 objet 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 à un DependencyProperty spécifique sur ce instance DependencyObject.

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

Définit l’image source d’un 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’un 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 précédemment inscrite en appelant RegisterPropertyChangedCallback.

(Hérité de DependencyObject)

Événements

DownloadProgress

Se produit lorsqu’un changement important s’est produit dans la progression de 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 d’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 restituer.

S’applique à

Voir aussi