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