BitmapImage Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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 |
| DispatcherQueue |
Obtient le |
| 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. |