Applies a linear transformation of the bitmap (based on specified matrix).
Namespace:
Aurigma.GraphicsMill
Assembly:
Aurigma.GraphicsMill (in Aurigma.GraphicsMill.dll)
Public Sub ApplyMatrixTransform ( _ transform As Matrix _ )
public void ApplyMatrixTransform( Matrix transform )
Type: Aurigma.GraphicsMill.Transforms.Matrix
Matrix class instance which specifies a matrix of the linear transformation.Here is an example how to apply skew transform using the affine matrix:
Dim matrix As New Aurigma.GraphicsMill.Transforms.Matrix '0 1 2 matrix.Elements(0) = 1.0F matrix.Elements(1) = 0.0F matrix.Elements(2) = 0.0F '3 4 5 matrix.Elements(3) = 0.0F matrix.Elements(4) = 0.3F matrix.Elements(5) = 0.0F '6 7 8 matrix.Elements(6) = 0.0F matrix.Elements(7) = 0.0F matrix.Elements(8) = 1.0F bitmap.Transforms.ApplyMatrixTransform(matrix)
Aurigma.GraphicsMill.Transforms.Matrix matrix = new Aurigma.GraphicsMill.Transforms.Matrix(); //0 1 2 matrix.Elements[0] = 1.0F; matrix.Elements[1] = 0.0F; matrix.Elements[2] = 0.0F; //3 4 5 matrix.Elements[3] = 0.0F; matrix.Elements[4] = 0.3F; matrix.Elements[5] = 0.0F; //6 7 8 matrix.Elements[6] = 0.0F; matrix.Elements[7] = 0.0F; matrix.Elements[8] = 1.0F; bitmap.Transforms.ApplyMatrixTransform(matrix);
Here is an example of the skew transform using points:
Dim horizontalOffset As Integer = 20 Dim verticalOffset As Integer = 40 Dim sourcePoints As PointF() = New PointF() { _ New PointF(0.0F, 0.0F), _ New PointF(bitmap.Width - 1, 0.0F), _ New PointF(0.0F, bitmap.Height - 1)} Dim destinationPoints As PointF() = New PointF() { _ New PointF(0.0F, 0.0F), _ New PointF(bitmap.Width - 1, verticalOffset), _ New PointF(horizontalOffset, bitmap.Height - 1)} Dim matrix As Aurigma.GraphicsMill.Transforms.Matrix = _ Aurigma.GraphicsMill.Transforms.Matrix.FromAffinePoints(sourcePoints, destinationPoints) bitmap.Transforms.ApplyMatrixTransform(matrix)
int horizontalOffset = 20; int verticalOffset = 40; PointF[] sourcePoints = new PointF[]{ new PointF(0.0F, 0.0F), new PointF(bitmap.Width - 1, 0.0F), new PointF(0.0F, bitmap.Height - 1)}; PointF[] destinationPoints = new PointF[]{ new PointF(0, 0), new PointF(bitmap.Width - 1, verticalOffset), new PointF(horizontalOffset, bitmap.Height - 1)}; Aurigma.GraphicsMill.Transforms.Matrix matrix = Aurigma.GraphicsMill.Transforms.Matrix.FromAffinePoints(sourcePoints, destinationPoints); bitmap.Transforms.ApplyMatrixTransform(matrix);
Here are examples with projective matrix:
Dim matrix As New Aurigma.GraphicsMill.Transforms.Matrix '0 1 2 matrix.Elements(0) = 1.0F matrix.Elements(1) = 0.0F matrix.Elements(2) = 0.0F '3 4 5 matrix.Elements(3) = 0.0F matrix.Elements(4) = 0.9F matrix.Elements(5) = 0.001F '6 7 8 matrix.Elements(6) = 0.0F matrix.Elements(7) = 0.01F matrix.Elements(8) = 1.0F bitmap.Transforms.ApplyMatrixTransform(matrix)
Aurigma.GraphicsMill.Transforms.Matrix matrix = new Aurigma.GraphicsMill.Transforms.Matrix(); //0 1 2 matrix.Elements[0] = 1.0F; matrix.Elements[1] = 0.0F; matrix.Elements[2] = 0.0F; //3 4 5 matrix.Elements[3] = 0.0F; matrix.Elements[4] = 0.9F; matrix.Elements[5] = 0.001F; //6 7 8 matrix.Elements[6] = 0.0F; matrix.Elements[7] = 0.01F; matrix.Elements[8] = 1.0F; bitmap.Transforms.ApplyMatrixTransform(matrix);
Dim offset As Integer = 20 Dim sourcePoints As PointF() = New PointF() { _ New PointF(0.0F, 0.0F), _ New PointF(bitmap.Width - 1, 0.0F), _ New PointF(bitmap.Width - 1, bitmap.Height - 1), _ New PointF(0.0F, bitmap.Height - 1)} Dim destinationPoints As PointF() = New PointF() { _ New PointF(0.0F, 0.0F), _ New PointF(bitmap.Width - 1, offset), _ New PointF(bitmap.Width - 1, bitmap.Height - offset - 1), _ New PointF(0.0F, bitmap.Height - 1)} Dim matrix As Aurigma.GraphicsMill.Transforms.Matrix = _ Aurigma.GraphicsMill.Transforms.Matrix.FromProjectivePoints(sourcePoints, destinationPoints) bitmap.Transforms.ApplyMatrixTransform(matrix)
int offset = 20; PointF[] sourcePoints = new PointF[]{ new PointF(0.0F, 0.0F), new PointF(bitmap.Width - 1, 0.0F), new PointF(bitmap.Width - 1, bitmap.Height - 1), new PointF(0.0F, bitmap.Height - 1)}; PointF[] destinationPoints = new PointF[] { new PointF(0.0F, 0.0F), new PointF(bitmap.Width - 1, offset), new PointF(bitmap.Width - 1, bitmap.Height - offset - 1), new PointF(0.0F, bitmap.Height - 1)}; Aurigma.GraphicsMill.Transforms.Matrix matrix = Aurigma.GraphicsMill.Transforms.Matrix.FromProjectivePoints(sourcePoints, destinationPoints); bitmap.Transforms.ApplyMatrixTransform(matrix);