LEADTOOLS WPF and Silverlight (Leadtools.Windows.Controls assembly) Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.30
UpdateImageFromSource Method
See Also 
Leadtools.Windows.Controls Namespace > RasterImageViewer Class : UpdateImageFromSource Method



Converts the WPF/Silverlight image in the Source property to the LEADTOOLS Leadtools.RasterImage and set it in Image. Supported in Silverlight, Windows Phone 7

Syntax

Visual Basic (Declaration) 
Public Overridable Sub UpdateImageFromSource() 
Visual Basic (Usage)Copy Code
Dim instance As RasterImageViewer
 
instance.UpdateImageFromSource()
C# 
public virtual void UpdateImageFromSource()
C++/CLI 
public:
virtual void UpdateImageFromSource(); 

Example

Visual BasicCopy Code
Public Sub ImageViewer_UpdateImageFromSource(ByVal viewer As RasterImageViewer)
      Dim bitmapImage As BitmapImage = New BitmapImage(New Uri(Path.Combine(LEAD_VARS.ImagesDir, "cannon.jpg")))
      'Convert to Bgr32a
      Dim convertedBitmap As FormatConvertedBitmap = New FormatConvertedBitmap(bitmapImage, PixelFormats.Bgra32, Nothing, 1)

      viewer.Source = New WriteableBitmap(convertedBitmap)

      Dim writeableBitmap As WriteableBitmap = TryCast(viewer.Source, WriteableBitmap)

      Dim pixels As Integer() = New Integer(writeableBitmap.PixelWidth * writeableBitmap.PixelHeight - 1) {}
      Dim stride As Integer = writeableBitmap.PixelWidth * 4

      writeableBitmap.CopyPixels(pixels, stride, 0)

      ' Fill the bitmap with Red.
      Dim i As Integer = 0
      Do While i < writeableBitmap.PixelWidth
         Dim j As Integer = 0
         Do While j < writeableBitmap.PixelHeight
            Dim color_data As Integer = (255 << 24) Or (0 << 16) Or (0 << 8) Or 0
            Dim pos As Integer = i + j * writeableBitmap.PixelWidth
            pixels(pos) = color_data
            j += 1
         Loop
         i += 1
      Loop

      Dim sourceRect As Int32Rect = New Int32Rect(0, 0, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight)
      writeableBitmap.WritePixels(sourceRect, pixels, stride, 0)

      viewer.UpdateImageFromSource()
   End Sub


Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
C#Copy Code
public void ImageViewer_UpdateImageFromSource(RasterImageViewer viewer)
   {
      BitmapImage bitmapImage = new BitmapImage(new Uri(Path.Combine(LEAD_VARS.ImagesDir, "cannon.jpg")));
      //Convert to Bgr32a
      FormatConvertedBitmap convertedBitmap = new FormatConvertedBitmap(bitmapImage, PixelFormats.Bgra32, null, 1);

      viewer.Source = new WriteableBitmap(convertedBitmap);

      WriteableBitmap writeableBitmap = viewer.Source as WriteableBitmap;

      int[] pixels = new int[writeableBitmap.PixelWidth * writeableBitmap.PixelHeight];
      int stride = writeableBitmap.PixelWidth * 4;

      writeableBitmap.CopyPixels(pixels, stride, 0);

      // Fill the bitmap with Red.
      for (int i = 0; i < writeableBitmap.PixelWidth; ++i)
      {
         for (int j = 0; j < writeableBitmap.PixelHeight; ++j)
         {
            int color_data = (255 << 24) | (0 << 16) | (0 << 8) | 0;
            int pos = i + j * writeableBitmap.PixelWidth;
            pixels[pos] = color_data;
         }
      }

      Int32Rect sourceRect = new Int32Rect(0, 0, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight);
      writeableBitmap.WritePixels(sourceRect, pixels, stride, 0);

      viewer.UpdateImageFromSource();
   }


static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
SilverlightCSharpCopy Code
public void ImageViewer_UpdateImageFromSource(RasterImageViewer viewer)
{
   RasterCodecs codecs = new RasterCodecs();
   RasterImage image = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "cannon.jpg");
   //Convert to Bgr32a
   ColorResolutionCommand cmd = new ColorResolutionCommand(ColorResolutionCommandMode.InPlace, 32, RasterByteOrder.Bgr, RasterDitheringMethod.None, ColorResolutionCommandPaletteFlags.None, null);
   cmd.Run(image);

   Stream stream = new MemoryStream();
   codecs.Save(image, stream, RasterImageFormat.Bmp, image.BitsPerPixel);
   BitmapImage imgSource = new BitmapImage();
   imgSource.SetSource(stream);
   viewer.Source = imgSource;

   WriteableBitmap writeableBitmap = viewer.Source as WriteableBitmap;

   int[] pixels = new int[writeableBitmap.PixelWidth * writeableBitmap.PixelHeight];
   int stride = writeableBitmap.PixelWidth * 4;

   Array.Copy(writeableBitmap.Pixels, pixels, stride);

   // Fill the bitmap with Red.
   for (int i = 0; i < writeableBitmap.PixelWidth; ++i)
   {
      for (int j = 0; j < writeableBitmap.PixelHeight; ++j)
      {
         int color_data = (255 << 24) | (0 << 16) | (0 << 8) | 0;
         int pos = i + j * writeableBitmap.PixelWidth;
         pixels[pos] = color_data;
      }
   }

   Array.Copy(pixels, writeableBitmap.Pixels, stride);

   viewer.UpdateImageFromSource();
}
SilverlightVBCopy Code
Public Sub ImageViewer_UpdateImageFromSource(ByVal viewer As RasterImageViewer)
   Dim codecs As RasterCodecs = New RasterCodecs()
   Dim image As RasterImage = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path & "cannon.jpg")
   'Convert to Bgr32a
   Dim cmd As ColorResolutionCommand = New ColorResolutionCommand(ColorResolutionCommandMode.InPlace, 32, RasterByteOrder.Bgr, RasterDitheringMethod.None, ColorResolutionCommandPaletteFlags.None, Nothing)
   cmd.Run(image)

   Dim stream As Stream = New MemoryStream()
   codecs.Save(image, stream, RasterImageFormat.Bmp, image.BitsPerPixel)
   Dim imgSource As BitmapImage = New BitmapImage()
   imgSource.SetSource(stream)
   viewer.Source = imgSource

   Dim writeableBitmap As WriteableBitmap = TryCast(viewer.Source, WriteableBitmap)

   Dim pixels As Integer() = New Integer(writeableBitmap.PixelWidth * writeableBitmap.PixelHeight - 1) {}
   Dim stride As Integer = writeableBitmap.PixelWidth * 4

   Array.Copy(writeableBitmap.Pixels, pixels, stride)

   ' Fill the bitmap with Red.
   Dim i As Integer = 0
   Do While i < writeableBitmap.PixelWidth
      Dim j As Integer = 0
      Do While j < writeableBitmap.PixelHeight
         Dim color_data As Integer = (255 << 24) Or (0 << 16) Or (0 << 8) Or 0
         Dim pos As Integer = i + j * writeableBitmap.PixelWidth
         pixels(pos) = color_data
         j += 1
      Loop
      i += 1
   Loop

   Array.Copy(pixels, writeableBitmap.Pixels, stride)

   viewer.UpdateImageFromSource()
End Sub

Remarks

If the Source property is changed, the RasterImageViewer must be informed so it can reflect the changes into the Image object. The UpdateImageFromSource can be used to perform this task.

The control uses the RasterImageConverter.ConvertFromSource to convert the WPF/Silverlight System.Windows.Media.ImageSource to LEADTOOLS Leadtools.RasterImage. The value of the ConvertFromSourceOptions property is used as the options parameter to this method.

Requirements

Target Platforms: Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family

See Also