WriteableBitmap WriteableBitmap WriteableBitmap WriteableBitmap Class


Provides a BitmapSource that can be written to and updated.

public : sealed class WriteableBitmap : BitmapSource, IWriteableBitmap
struct winrt::Windows::UI::Xaml::Media::Imaging::WriteableBitmap : BitmapSource, IWriteableBitmap
public sealed class WriteableBitmap : BitmapSource, IWriteableBitmap
Public NotInheritable Class WriteableBitmap Inherits BitmapSource Implements IWriteableBitmap

Windows 10 requirements

Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)


This example writes to the PixelBuffer property of WriteableBitmap as part of a transcoding scenario that will eventually use the WriteableBitmap as an Image.Source value and display the image. The code shown here comes from a larger code sample, the SDK XAML images sample.

using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read)) 
    BitmapDecoder decoder = await BitmapDecoder.CreateAsync(fileStream); 
    // Scale image to appropriate size 
    BitmapTransform transform = new BitmapTransform() {  
        ScaledWidth = Convert.ToUInt32(Scenario4WriteableBitmap.PixelWidth), 
        ScaledHeight = Convert.ToUInt32(Scenario4WriteableBitmap.PixelHeight)
    PixelDataProvider pixelData = await decoder.GetPixelDataAsync( 
        BitmapPixelFormat.Bgra8, // WriteableBitmap uses BGRA format 
        ExifOrientationMode.IgnoreExifOrientation, // This sample ignores Exif orientation 

    // An array containing the decoded image data, which could be modified before being displayed 
    byte[] sourcePixels = pixelData.DetachPixelData(); 

    // Open a stream to copy the image contents to the WriteableBitmap's pixel buffer 
    using (Stream stream = Scenario4WriteableBitmap.PixelBuffer.AsStream()) 
        await stream.WriteAsync(sourcePixels, 0, sourcePixels.Length); 


The image source data of a WriteableBitmap is an underlying pixel buffer. WriteableBitmap.PixelBuffer cannot be written to directly, however, you can use language-specific techniques to access the buffer and change its contents.

  • To access the pixel content from C# or Microsoft Visual Basic, you can use the AsStream extension method to access the underlying buffer as a stream.
  • To access the pixel content from C++, you can query for the IBufferByteAccess type (defined in Robuffer.h) and directly access its Buffer property.

Some of the scenarios where you might have used a WriteableBitmap class in previous XAML frameworks can be accomplished in the Windows Runtime by using the RenderTargetBitmap class instead. For more info see RenderTargetBitmap.


WriteableBitmap(Int32, Int32) WriteableBitmap(Int32, Int32) WriteableBitmap(Int32, Int32) WriteableBitmap(Int32, Int32)

Initializes a new instance of the WriteableBitmap class.


Dispatcher Dispatcher Dispatcher Dispatcher

Gets the CoreDispatcher that this object is associated with. The CoreDispatcher represents a facility that can access the DependencyObject on the UI thread even if the code is initiated by a non-UI thread.

(Inherited from DependencyObject)
PixelBuffer PixelBuffer PixelBuffer PixelBuffer

Gets an access for the direct buffer where each pixel of the WriteableBitmap is written to.

PixelHeight PixelHeight PixelHeight PixelHeight

Gets the height of the bitmap in pixels.

(Inherited from BitmapSource)
PixelHeightProperty PixelHeightProperty PixelHeightProperty PixelHeightProperty

Identifies the PixelHeight dependency property.

(Inherited from BitmapSource)
PixelWidth PixelWidth PixelWidth PixelWidth

Gets the width of the bitmap in pixels.

(Inherited from BitmapSource)
PixelWidthProperty PixelWidthProperty PixelWidthProperty PixelWidthProperty

Identifies the PixelWidth dependency property.

(Inherited from BitmapSource)


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

Clears the local value of a dependency property.

(Inherited from DependencyObject)
GetAnimationBaseValue(DependencyProperty) GetAnimationBaseValue(DependencyProperty) GetAnimationBaseValue(DependencyProperty) GetAnimationBaseValue(DependencyProperty)

Returns any base value established for a dependency property, which would apply in cases where an animation is not active.

(Inherited from DependencyObject)
GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty)

Returns the current effective value of a dependency property from a DependencyObject.

(Inherited from DependencyObject)
Invalidate() Invalidate() Invalidate() Invalidate()

Requests a draw or redraw of the entire bitmap.

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

Returns the local value of a dependency property, if a local value is set.

(Inherited from DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback) RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback) RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback) RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback)

Registers a notification function for listening to changes to a specific DependencyProperty on this DependencyObject instance.

(Inherited from DependencyObject)
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.

(Inherited from BitmapSource)
SetSourceAsync(IRandomAccessStream) SetSourceAsync(IRandomAccessStream) SetSourceAsync(IRandomAccessStream) SetSourceAsync(IRandomAccessStream)

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

(Inherited from BitmapSource)
SetValue(DependencyProperty,Object) SetValue(DependencyProperty,Object) SetValue(DependencyProperty,Object) SetValue(DependencyProperty,Object)

Sets the local value of a dependency property on a DependencyObject.

(Inherited from DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty,Int64) UnregisterPropertyChangedCallback(DependencyProperty,Int64) UnregisterPropertyChangedCallback(DependencyProperty,Int64) UnregisterPropertyChangedCallback(DependencyProperty,Int64)

Cancels a change notification that was previously registered by calling RegisterPropertyChangedCallback.

(Inherited from DependencyObject)

See also