Create a Thumbnail
The
BitmapImage class is used to create a thumbnail in WPF. The DecodePixelWidth
and DecodePixelHeight properties are used to set the size of the bitmap from an
image and this bitmap can be displayed in an Image control.
The
BitmapImage element in XAML represents a Bitmap Image control at design-time.
The following code snippet creates a BitmapImage element and set its DecodePixelWidth
and DecodePixelHeight attributes.
<Image Width="120" Height="120" HorizontalAlignment="Center">
<Image.Source>
<BitmapImage DecodePixelWidth="100" DecodePixelHeight="100" UriSource="Garden.jpg" />
</Image.Source>
</Image>
Listing
40 shows a Window with two Image controls. First Image control display an image
in its original size and second control displays its thumbnail size.
<Window x:Class="ThumbnailSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="625">
<Grid Margin="10,10,10,10" Name="LayoutRoot">
<Image Source="Garden.jpg" HorizontalAlignment="Left" />
<Border BorderBrush="Gray" BorderThickness="2" HorizontalAlignment="Right"
Width="130" Height="130">
<Image Width="120" Height="120" HorizontalAlignment="Center">
<Image.Source>
<BitmapImage DecodePixelWidth="100" DecodePixelHeight="100" UriSource="Garden.jpg" />
</Image.Source>
</Image>
</Border>
</Grid>
</Window>
Listing 40
The
output of Listing 40 generates Figure 44 where the left side image is the
original image and right side image is the thumbnail preview of the image.
Figure 44
The code listed in Listing 41 creates a
thumbnail at run-time by creating a BitmapImage object and setting its DecodePixelWidth
and DecodePixelHeight properties.
private void CreateATyhumbnail()
{
// Create an
Image control
Image
thumbnailImage = new Image();
thumbnailImage.Width = 130;
// Create a
BitmapImage and sets its DecodePixelWidth and DecodePixelHeight
BitmapImage
bmpImage = new BitmapImage();
bmpImage.BeginInit();
bmpImage.UriSource = new Uri(@"Garden.jpg", UriKind.RelativeOrAbsolute);
bmpImage.DecodePixelWidth = 120;
bmpImage.DecodePixelHeight = 120;
bmpImage.EndInit();
// Set Source
property of Image
thumbnailImage.Source = bmpImage;
LayoutRoot.Children.Add(thumbnailImage);
}
Listing 41