| Visual Basic (Declaration) | |
|---|---|
Public Overridable ReadOnly Property Transform As Matrix  | |
| Visual Basic (Usage) |  Copy Code | 
|---|---|
Dim instance As ImageViewer Dim value As Matrix value = instance.Transform  | |
| C# | |
|---|---|
public virtual Matrix Transform {get;}  | |
Property Value
A System.Windows.Media.Matrix that contains the current display matrix used in this control.
| Visual Basic |  Copy Code | 
|---|---|
Private Sub viewer_TransformChanged(ByVal sender As Object, ByVal e As EventArgs) Dim viewer As ImageViewer = TryCast(sender, ImageViewer) Dim s As String = String.Format("TransformChanged Event: {0}", viewer.Transform.ToString()) MessageBox.Show(s) End Sub Public Sub ImageViewer_TransformChanged(ByVal viewer As ImageViewer) AddHandler viewer.TransformChanged, AddressOf viewer_TransformChanged Select Case viewer.SizeMode Case SizeMode.Fit viewer.SizeMode = SizeMode.FitAlways Case SizeMode.FitAlways viewer.SizeMode = SizeMode.FitWidth Case SizeMode.FitWidth viewer.SizeMode = SizeMode.Normal Case SizeMode.Normal viewer.SizeMode = SizeMode.Stretch Case SizeMode.Stretch viewer.SizeMode = SizeMode.Fit End Select RemoveHandler viewer.TransformChanged, AddressOf viewer_TransformChanged End Sub  | |
| C# |  Copy Code | 
|---|---|
private void viewer_TransformChanged(object sender, EventArgs e) { ImageViewer viewer = sender as ImageViewer; string s = string.Format("TransformChanged Event: {0}", viewer.Transform.ToString()); MessageBox.Show(s); } public void ImageViewer_TransformChanged(ImageViewer viewer) { viewer.TransformChanged += new EventHandler(viewer_TransformChanged); switch (viewer.SizeMode) { case SizeMode.Fit: viewer.SizeMode = SizeMode.FitAlways; break; case SizeMode.FitAlways: viewer.SizeMode = SizeMode.FitWidth; break; case SizeMode.FitWidth: viewer.SizeMode = SizeMode.Normal; break; case SizeMode.Normal: viewer.SizeMode = SizeMode.Stretch; break; case SizeMode.Stretch: viewer.SizeMode = SizeMode.Fit; break; } viewer.TransformChanged -= new EventHandler(viewer_TransformChanged); }  | |
| SilverlightCSharp |  Copy Code | 
|---|---|
private void viewer_TransformChanged(object sender, EventArgs e) { ImageViewer viewer = sender as ImageViewer; string s = string.Format("TransformChanged Event: {0}", viewer.Transform.ToString()); MessageBox.Show(s); } public void ImageViewer_TransformChanged(ImageViewer viewer) { viewer.TransformChanged += new EventHandler(viewer_TransformChanged); switch (viewer.SizeMode) { case SizeMode.Fit: viewer.SizeMode = SizeMode.FitAlways; break; case SizeMode.FitAlways: viewer.SizeMode = SizeMode.FitWidth; break; case SizeMode.FitWidth: viewer.SizeMode = SizeMode.Normal; break; case SizeMode.Normal: viewer.SizeMode = SizeMode.Stretch; break; case SizeMode.Stretch: viewer.SizeMode = SizeMode.Fit; break; } viewer.TransformChanged -= new EventHandler(viewer_TransformChanged); }  | |
| SilverlightVB |  Copy Code | 
|---|---|
Private Sub viewer_TransformChanged(ByVal sender As Object, ByVal e As EventArgs)
   Dim viewer As ImageViewer = TryCast(sender, ImageViewer)
   Dim s As String = String.Format("TransformChanged Event: {0}", viewer.Transform.ToString())
   MessageBox.Show(s)
End Sub
Public Sub ImageViewer_TransformChanged(ByVal viewer As ImageViewer)
   AddHandler viewer.TransformChanged, AddressOf viewer_TransformChanged
   Select Case viewer.SizeMode
      Case SizeMode.Fit
         viewer.SizeMode = SizeMode.FitAlways
      Case SizeMode.FitAlways
         viewer.SizeMode = SizeMode.FitWidth
      Case SizeMode.FitWidth
         viewer.SizeMode = SizeMode.Normal
      Case SizeMode.Normal
         viewer.SizeMode = SizeMode.Stretch
      Case SizeMode.Stretch
         viewer.SizeMode = SizeMode.Fit
   End Select
   RemoveHandler viewer.TransformChanged, AddressOf viewer_TransformChanged
End Sub | |
The Transform property will contain the accumulative transforms performed on the image before it is being displayed by the control. The following properties determine the final transformation of the image:
- 
        
The control size
 - 
        
The image physical size in pixels and if using the image resolution is enabled with the UseDpi property
 - 
        
Any manual correction with the AspectRatioCorrection
 - 
        
The current zoom using the ScaleFactor property
 - 
        
The current display and automatic adjustment set with the SizeMode property
 - 
        
Image viewing transformation using the Flip, Reverse and RotateAngle properties
 
Although you can use the Transform property to calculate where a location or bounds on the image will be displayed on the control and vice versa using the Matrix.Transform methods, you can easily achieve this task with the control PointToImageCoordinates, BoundsToImageCoordinates, PointFromImageCoordinates and BoundsFromImageCoordinates methods
Target Platforms: Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family
  
   
                           
Copy Code