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);