Matrix Transforms: Rotation at (x = 1, y = 2) - Prepend
<Window x:Class="WpfApplication1.MatrixTransforms" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Matrix Transforms" Height="450" Width="270"> <StackPanel> <TextBlock Margin="10,10,5,5" Text="Original Matrix:" /> <TextBlock Name="tbOriginal" Margin="20,0,5,5" /> <TextBlock Margin="10,0,5,5" Text="RotationAt Prepend:" /> <TextBlock x:Name="tbRotateAtPrepend" Margin="20,0,5,5" TextWrapping="Wrap" /> </StackPanel> </Window> //File:Window.xaml.vb Imports System Imports System.Windows Imports System.Windows.Media Namespace WpfApplication1 Public Partial Class MatrixTransforms Inherits Window Public Sub New() ' Original matrix: Dim m As New Matrix(1, 2, 3, 4, 0, 1) tbOriginal.Text = "(" & m.ToString() & ")" ' Rotation at (x = 1, y = 2) - Prepend: m = New Matrix(1, 2, 3, 4, 0, 1) m.RotateAtPrepend(45, 1, 2) tbRotateAtPrepend.Text = "(" & MatrixRound(m).ToString() & ")" End Sub Private Function MatrixRound(m As Matrix) As Matrix m.M11 = Math.Round(m.M11, 3) m.M12 = Math.Round(m.M12, 3) m.M21 = Math.Round(m.M21, 3) m.M22 = Math.Round(m.M22, 3) m.OffsetX = Math.Round(m.OffsetX, 3) m.OffsetY = Math.Round(m.OffsetY, 3) Return m End Function End Class End Namespace