BitmapSource BitmapSource BitmapSource BitmapSource Class

Definition

Provides a source object for properties that use a bitmap-format image source.

public : class BitmapSource : ImageSource, IBitmapSource
public class BitmapSource : ImageSource, IBitmapSource
Public Class BitmapSource Inherits ImageSource Implements IBitmapSource
var bitmapSource = new bitmapSource();
Inheritance
Attributes
Windows 10 requirements
Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)

Remarks

Important

You don't typically use or create a BitmapSource type directly, that's why you don't see code examples on this page. It's more common to create a BitmapImage and use that as a value. For code examples and more info, see the reference page for BitmapImage.

ImageSource and BitmapSource are intermediate base classes for BitmapImage. For more info on how to create an image source to use for Image.Source and ImageBrush.ImageSource, see Image and ImageBrush and BitmapImage.

BitmapSource derived classes

BitmapSource is the parent class for BitmapImage and WriteableBitmap.

Constructors

BitmapSource() BitmapSource() BitmapSource() BitmapSource()

Provides base class initialization behavior for BitmapSource -derived classes.

protected : BitmapSource()
protected BitmapSource()
Protected Sub New()
var bitmapSource = new bitmapSource();

Properties

PixelHeight PixelHeight PixelHeight PixelHeight

Gets the height of the bitmap in pixels.

public : int PixelHeight { get; }
public int PixelHeight { get; }
Public ReadOnly Property PixelHeight As int
var int = bitmapSource.pixelHeight;
Value
int int int int

The height of the bitmap in pixels.

PixelHeightProperty PixelHeightProperty PixelHeightProperty PixelHeightProperty

Identifies the PixelHeight dependency property.

public : static DependencyProperty PixelHeightProperty { get; }
public static DependencyProperty PixelHeightProperty { get; }
Public Static ReadOnly Property PixelHeightProperty As DependencyProperty
var dependencyProperty = Windows.UI.Xaml.Media.Imaging.BitmapSource.pixelHeightProperty;
Value
DependencyProperty DependencyProperty DependencyProperty DependencyProperty

The identifier for the PixelHeight dependency property.

PixelWidth PixelWidth PixelWidth PixelWidth

Gets the width of the bitmap in pixels.

public : int PixelWidth { get; }
public int PixelWidth { get; }
Public ReadOnly Property PixelWidth As int
var int = bitmapSource.pixelWidth;
Value
int int int int

The width of the bitmap in pixels.

PixelWidthProperty PixelWidthProperty PixelWidthProperty PixelWidthProperty

Identifies the PixelWidth dependency property.

public : static DependencyProperty PixelWidthProperty { get; }
public static DependencyProperty PixelWidthProperty { get; }
Public Static ReadOnly Property PixelWidthProperty As DependencyProperty
var dependencyProperty = Windows.UI.Xaml.Media.Imaging.BitmapSource.pixelWidthProperty;
Value
DependencyProperty DependencyProperty DependencyProperty DependencyProperty

The identifier for the PixelWidth dependency property.

Dispatcher Dispatcher Dispatcher Dispatcher

Inherited from DependencyObject

Methods

SetSource(IRandomAccessStream) SetSource(IRandomAccessStream) SetSource(IRandomAccessStream) SetSource(IRandomAccessStream)

Sets the source image for a BitmapSource by accessing a stream. Most callers should use SetSourceAsync instead.

public : void SetSource(IRandomAccessStream streamSource)
public void SetSource(IRandomAccessStream streamSource)
Public Function SetSource(streamSource As IRandomAccessStream) As void
bitmapSource.setSource(streamSource);
Parameters
streamSource
IRandomAccessStream IRandomAccessStream IRandomAccessStream IRandomAccessStream

The stream source that sets the image source value.

Remarks

Calling SetSource rather than SetSourceAsync has the potential to block the UI thread until the image source file is returned and processed. It is for this reason that we generally recommend calling SetSourceAsync instead of calling SetSource.

In low memory situations (most likely on lower-memory phones), it is possible for an exception to be raised with the message "The image is unrecognized" and an HRESULT of 0x88982F60. While this exception ordinarily indicates bad data, if your app is close to its memory limit then the cause of the exception is likely to be low memory. In that case, we recommend that you free memory and try again.

See Also

SetSourceAsync(IRandomAccessStream) SetSourceAsync(IRandomAccessStream) SetSourceAsync(IRandomAccessStream) SetSourceAsync(IRandomAccessStream)

Sets the source image for a BitmapSource by accessing a stream and processing the result asynchronously.

public : IAsyncAction SetSourceAsync(IRandomAccessStream streamSource)
public IAsyncAction SetSourceAsync(IRandomAccessStream streamSource)
Public Function SetSourceAsync(streamSource As IRandomAccessStream) As IAsyncAction
var iAsyncAction = bitmapSource.setSourceAsync(streamSource);
Parameters
streamSource
IRandomAccessStream IRandomAccessStream IRandomAccessStream IRandomAccessStream

The stream source that sets the image source value.

Returns

An asynchronous handler called when the operation is complete.

Examples

This example shown here uses a file stream (obtained using a file picker, not shown) to load an image source by calling SetSourceAsync. The file picker, stream and call to SetSourceAsync are all asynchronous. The code shown here comes from a larger code sample, the SDK XAML images sample.

// Ensure the stream is disposed once the image is loaded
using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
     // Set the image source to the selected bitmap
     BitmapImage bitmapImage = new BitmapImage();
     bitmapImage.DecodePixelHeight = decodePixelHeight;
     bitmapImage.DecodePixelWidth = decodePixelWidth;

     await bitmapImage.SetSourceAsync(fileStream);
     Scenario2Image.Source = bitmapImage;
}

Remarks

Setting an image source by calling the asynchronous SetSourceAsync method rather than the similar SetSource method avoids blocking the UI thread. The SetSourceAsync behavior is similar to what the system does internally when you set an image source as a URI in markup: the system doesn't wait to retrieve and decode, but it does run layout again once the image source is available. The markup parsing equivalent doesn't expose the async infrastructure, but the SetSourceAsync method does. For more info on how to use async, await, or how to work with an IAsyncAction value, see Call asynchronous APIs in C# or Visual Basic.

If the app changes the image source again via SetSourceAsync, SetSource or UriSource while a SetSourceAsync call is already in progress, the pending SetSourceAsync action will throw a TaskCanceledException and set the Status to Canceled.

If you have a Microsoft .NET stream that you want to use as a source, you can use the AsRandomAccessStream extension method to convert it to the IRandomAccessStream type that's needed as input for SetSourceAsync.

In low memory situations (most likely on lower-memory phones), it is possible for an exception to be raised with the message "The image is unrecognized" and an HRESULT of 0x88982F60. While this exception ordinarily indicates bad data, if your app is close to its memory limit then the cause of the exception is likely to be low memory. In that case, we recommend that you free memory and try again.

See Also

ClearValue(DependencyProperty) ClearValue(DependencyProperty) ClearValue(DependencyProperty) ClearValue(DependencyProperty)

Inherited from DependencyObject

GetAnimationBaseValue(DependencyProperty) GetAnimationBaseValue(DependencyProperty) GetAnimationBaseValue(DependencyProperty) GetAnimationBaseValue(DependencyProperty)

Inherited from DependencyObject

GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty)

Inherited from DependencyObject

ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty)

Inherited from DependencyObject

RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback) RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback) RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback) RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback)

Inherited from DependencyObject

SetValue(DependencyProperty,Object) SetValue(DependencyProperty,Object) SetValue(DependencyProperty,Object) SetValue(DependencyProperty,Object)

Inherited from DependencyObject

UnregisterPropertyChangedCallback(DependencyProperty,Int64) UnregisterPropertyChangedCallback(DependencyProperty,Int64) UnregisterPropertyChangedCallback(DependencyProperty,Int64) UnregisterPropertyChangedCallback(DependencyProperty,Int64)

Inherited from DependencyObject

See Also