Creates and initializes a Matrix object based on six numbers that define an affine transformation
#include <GDIPlus.au3>
_GDIPlus_MatrixCreate2 ( [$nM11 = 1 [, $nM12 = 1 [, $nM21 = 1 [, $nM22 = 1 [, $nDX = 0 [, $nDY = 0]]]]]] )
$nM11 | [optional] A real number that specifies the element in the first row, first column (horizontal scaling). Default is 1. |
$nM12 | [optional] A real number that specifies the element in the first row, second column (vertical scaling). Default is 1. |
$nM21 | [optional] A Real number that specifies the element in the second row, first column (horizontal shearing). Default is 1. |
$nM22 | [optional] A real number that specifies the element in the second row, second column (vertical shearing). Default is 1. |
$nDX | [optional] A real number that specifies the element in the third row, first column (horizontal translation). Default is 0. |
$nDY | [optional] A real number that specifies the element in the third row, second column (vertical translation). Default is 0. |
Success: | A pointer to the new created Matrix object. |
Failure: | 0 and sets the @error flag to non-zero, @extended may contain GPSTATUS error code ($GPIP_ERR* see GPIPlusConstants.au3). |
Check out 'Transformations' -> https://msdn.microsoft.com/en-us/library/windows/desktop/ms533810(v=vs.85).aspx or 'Matrix Representation of Transformations' -> https://msdn.microsoft.com/en-us/library/windows/desktop/ms536397(v=vs.85).aspx.
_GDIPlus_MatrixCreate, _GDIPlus_MatrixDispose
Search GdipCreateMatrix2 in MSDN Library.
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
Example_1()
Example_2()
Func Example_1()
Local $hGui = GUICreate("GDI+", 800, 400)
GUISetBkColor(0x282828)
GUISetState(@SW_SHOW)
_GDIPlus_Startup()
Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
Local $hMatrix_S = _GDIPlus_MatrixCreate2(2, 0, 0, 1, 0, 0) ;horizontal doubling
Local $hMatrix_T = _GDIPlus_MatrixCreate2(1, 0, 0, 1, 50, 0) ;horizontal translation of 50 units
Local $hBrush_Line = _GDIPlus_LineBrushCreateFromRect(_GDIPlus_RectFCreate(0, 0, 200, 100), 0xFFFF0000, 0xFF0000FF, 1)
_GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 800, 100, $hBrush_Line) ;fill a large area with the gradient brush (no transformation).
_GDIPlus_LineBrushSetTransform($hBrush_Line, $hMatrix_S) ;apply the scaling transformation.
_GDIPlus_GraphicsFillRect($hGraphics, 0, 150, 800, 100, $hBrush_Line) ;fill a large area with the scaled gradient brush.
_GDIPlus_LineBrushMultiplyTransform($hBrush_Line, $hMatrix_T) ;form a composite transformation: first scale, then translate.
_GDIPlus_GraphicsFillRect($hGraphics, 0, 300, 800, 100, $hBrush_Line) ;fill a large area with the scaled and translated gradient brush.
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
_GDIPlus_MatrixDispose($hMatrix_S)
_GDIPlus_MatrixDispose($hMatrix_T)
_GDIPlus_BrushDispose($hBrush_Line)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
GUIDelete($hGui)
EndFunc ;==>Example_1
Func Example_2()
Local $hGui = GUICreate("GDI+", 800, 400)
GUISetBkColor(0x282828)
GUISetState(@SW_SHOW)
_GDIPlus_Startup()
Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
Local $hBitmap = _GDIPlus_BitmapCreateFromScan0(800, 400)
Local $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)
Local $hBrush_Line = _GDIPlus_LineBrushCreateFromRect(_GDIPlus_RectFCreate(0, 0, 200, 100), 0xFFFF0000, 0xFF0000FF)
Local $hMatrix_S, $i = 0
Do
$hMatrix_S = _GDIPlus_MatrixCreate2(2.5, 0, Cos($i / 200) * 10, 1, 0, Sin($i / 50) * 75)
_GDIPlus_LineBrushSetTransform($hBrush_Line, $hMatrix_S)
_GDIPlus_GraphicsFillRect($hContext, 0, 150, 800, 100, $hBrush_Line)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 800, 400)
_GDIPlus_MatrixDispose($hMatrix_S)
$i += 1
Until GUIGetMsg() = $GUI_EVENT_CLOSE
_GDIPlus_MatrixDispose($hMatrix_S)
_GDIPlus_BrushDispose($hBrush_Line)
_GDIPlus_GraphicsDispose($hContext)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
GUIDelete($hGui)
EndFunc ;==>Example_2