Lakes Posted November 10, 2011 Share Posted November 10, 2011 This one is included in the GDIP include expandcollapse popup; #FUNCTION# ==================================================================================================================== ; Name...........: _GDIPlus_GraphicsFillPolygon2 ; Description ...: Uses a brush to fill the interior of a polygon ; Syntax.........: _GDIPlus_GraphicsFillPolygon2($hGraphics, $aPoints[, $hBrush = 0[, $iFillMode = 0]]) ; Parameters ....: $hGraphics - Pointer to a Graphics object ; $aPoints - Array that specify the vertices of the polygon: ; |[0][0] - Number of vertices ; |[1][0] - Point 1 X position ; |[1][1] - Point 1 Y position ; |[2][0] - Point 2 X position ; |[2][1] - Point 2 Y position ; |[n][0] - Point n X position ; |[n][1] - Point n Y position ; $hBrush - Pointer to a Brush object that is used to paint the interior of the polygon. If 0, a black brush ; +will be used. ; $iFillMode - Fill mode of the interior of the polygon: ; |0 - The areas are filled according to the even-odd parity rule ; |1 - The areas are filled according to the nonzero winding rule ; Return values .: Success - True ; Failure - False and either: ; |@error and @extended are set if DllCall failed ; |$GDIP_STATUS contains a non zero value specifying the error code ; Remarks .......: None ; Related .......: _GDIPlus_GraphicsFillPolygon ; Link ..........; @@MsdnLink@@ GdipFillPolygon ; Example .......; No ; =============================================================================================================================== Func _GDIPlus_GraphicsFillPolygon2($hGraphics, $aPoints, $hBrush = 0, $iFillMode = 0) Local $iI, $iCount, $iTmpErr, $iTmpExt, $pPoints, $tPoints, $aResult __GDIPlus_BrushDefCreate($hBrush) $iCount = $aPoints[0][0] $tPoints = DllStructCreate("float[" & $iCount * 2 & "]") $pPoints = DllStructGetPtr($tPoints) For $iI = 1 To $iCount DllStructSetData($tPoints, 1, $aPoints[$iI][0], (($iI - 1) * 2) + 1) DllStructSetData($tPoints, 1, $aPoints[$iI][1], (($iI - 1) * 2) + 2) Next $aResult = DllCall($ghGDIPDll, "uint", "GdipFillPolygon", "hwnd", $hGraphics, "hwnd", $hBrush, "ptr", $pPoints, "int", $iCount, "int", $iFillMode) $iTmpErr = @error $iTmpExt = @extended __GDIPlus_BrushDefDispose() If $iTmpErr Then Return SetError($iTmpErr, $iTmpExt, False) $GDIP_STATUS = $aResult[0] Return $aResult[0] = 0 EndFunc ;==>_GDIPlus_GraphicsFillPolygon2 But this one is not expandcollapse popup; #FUNCTION# =================================================================================== ; Name...........: _GDIPlus_GraphicsFillPolygon ; Description ...: Fill a polygon ; Syntax.........: _GDIPlus_GraphicsFillPolygon($hGraphics, $aPoints[, $hBrush = 0]) ; Parameters ....: $hGraphics - Handle to a Graphics object ; $aPoints - Array that specify the vertices of the polygon: ; |[0][0] - Number of vertices ; |[1][0] - Vertice 1 X position ; |[1][1] - Vertice 1 Y position ; |[2][0] - Vertice 2 X position ; |[2][1] - Vertice 2 Y position ; |[n][0] - Vertice n X position ; |[n][1] - Vertice n Y position ; $hBrush - Handle to a brush object that is used to fill the polygon. ; - If $hBrush is 0, a solid black brush is used. ; Return values .: Success - True ; Failure - False ; Author ........: ; Modified.......: smashly ; Remarks .......: ; Related .......: ; Link ..........; @@MsdnLink@@ GdipFillPolygonI ; Example .......; Yes ; =============================================================================================== Func _GDIPlus_GraphicsFillPolygon($hGraphics, $aPoints, $hBrush = 0) Local $iI, $iCount, $pPoints, $tPoints, $aResult, $tmpError, $tmpExError $iCount = $aPoints[0][0] $tPoints = DllStructCreate("int[" & $iCount * 2 & "]") $pPoints = DllStructGetPtr($tPoints) For $iI = 1 To $iCount DllStructSetData($tPoints, 1, $aPoints[$iI][0], (($iI - 1) * 2) + 1) DllStructSetData($tPoints, 1, $aPoints[$iI][1], (($iI - 1) * 2) + 2) Next _GDIPlus_BrushDefCreate($hBrush) $aResult = DllCall($ghGDIPDll, "int", "GdipFillPolygonI", "hWnd", $hGraphics, "hWnd", $hBrush, _ "ptr", $pPoints, "int", $iCount, "int", "FillModeAlternate") $tmpError = @error $tmpExError = @extended _GDIPlus_BrushDefDispose() If $tmpError Then Return SetError($tmpError, $tmpExError, False) Return SetError($aResult[0], 0, $aResult[0] = 0) EndFunc ;==>_GDIPlus_GraphicsFillPolygon So I should be able to replace _GDIPlus_GraphicsFillPolygon with _GDIPlus_GraphicsFillPolygon2 and just add a zero at the end, but it crashes autoit. Here`s the example I`m looking at, with the _GDIPlus_GraphicsFillPolygon2 commented out. expandcollapse popup#include <GDIPlus.au3> #include <WindowsConstants.au3> #include <GuiConstants.au3> #include <GDIP.au3> Global $width = 700 Global $height = 300 Global $iTrans $hwnd = GUICreate("test", $width, $height) GUISetState() If Not FileExists(@DesktopDir & "\bitmap.png") Then InetGet("http://www.autoitscript.com/forum/uploads/monthly_10_2008/post-31256-1224504936_thumb.png", _ @DesktopDir & "\bitmap.png") _GDIPlus_Startup() $graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd) _GDIPlus_GraphicsClear($graphics, 0xFF008800) $image = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\bitmap.png") $iwidth = _GDIPlus_ImageGetWidth($image) $iheight = _GDIPlus_ImageGetHeight($image) $hGraphicGUI = _GDIPlus_GraphicsCreateFromHWND($hwnd) $hBMPBuff = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphicGUI) $hGraphic = _GDIPlus_ImageGetGraphicsContext($hBMPBuff) $brush = _GDIPlus_BrushCreateSolid(0xFF000000) $family = _GDIPlus_FontFamilyCreate("Arial") $font = _GDIPlus_FontCreate($family, 24) $layout = _GDIPlus_RectFCreate(0, 250, $width, $height) $format = _GDIPlus_StringFormatCreate() _GDIPlus_StringFormatSetAlign($format, 2) _GDIPlus_GraphicsDrawStringEx($graphics, "Normal ", $font, $layout, $format, $brush) _GDIPlus_GraphicsDrawImageRect($graphics, $image, 480, 20, $iwidth, $iheight) _GDIPlus_StringFormatSetAlign($format, 1) _GDIPlus_GraphicsDrawStringEx($graphics, "Top and Bottom Fade ", $font, $layout, $format, $brush) GDIPlus_TopBotFade($hGraphic, $image, $iheight / 2 - 20, 30, 0xFF666666, 0xFF333333) _GDIPlus_GraphicsDrawImage($graphics, $hBMPBuff, 250, 20) _GDIPlus_StringFormatSetAlign($format, 0) _GDIPlus_GraphicsDrawStringEx($graphics, " Bevelled", $font, $layout, $format, $brush) ;GDIPlus_AddBevel($graphics, $image, 30, 0xFF606060, 0xFFAFAFAF) _GDIPlus_GraphicsDrawImage($graphics, $hBMPBuff, 20, 20) Do sleep(10) Until GUIGetMsg() = -3 _GDIPlus_ImageDispose($image) _GDIPlus_BrushDispose($brush) _GDIPlus_GraphicsDispose($graphics) _GDIPlus_GraphicsDispose($hGraphic) _WinAPI_DeleteObject($hBMPBuff) _GDIPlus_FontDispose($font) _GDIPlus_FontFamilyDispose($family) _GDIPlus_StringFormatDispose($format) _GDIPlus_Shutdown() Func GDIPlus_TopBotFade($hGraphic, $image, $topless, $Botless, $TopColor, $iBotColor, $TotTrans = 1) Local $iwidth = _GDIPlus_ImageGetWidth($image) Local $iheight = _GDIPlus_ImageGetHeight($image) Local $aPoints[5][2] = [[4, 0],[0, 0],[$iwidth, 0],[$iwidth, $topless],[0, $topless]] ; _GDIPlus_GraphicsFillPolygon2($hGraphic, $aPoints, $TopColor,0) GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints, $TopColor) Local $aPoints[5][2] = [[4, 0],[0, $iheight - $Botless],[$iwidth, $iheight - $Botless],[$iwidth, $iheight],[0, $iheight]] ; _GDIPlus_GraphicsFillPolygon2($hGraphic, $aPoints, $iBotColor,0) GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints, $iBotColor) For $n = 0 To $iheight - 1 If ($iheight - $n) <= $Botless Then ; Bottom invisible up $topless $iTrans = (($iheight - $n) / $Botless) ElseIf $n <= $topless Then ; Top invisible down $topless $iTrans = $n / $topless Else $iTrans = $TotTrans EndIf If $iTrans > $TotTrans Then $iTrans = $TotTrans _GDIPlus_GraphicsDrawImageRectRectTrans($hGraphic, $image, 1, $n, $iwidth, 1, 1, $n, $iwidth, 1, 2, $iTrans) Next Return EndFunc ;==>GDIPlus_TopBotFade Func GDIPlus_AddBevel($graphics, $image, $iBdr, $iTopLeftColor, $iBotRightColor) Local $iwidth = _GDIPlus_ImageGetWidth($image) Local $iheight = _GDIPlus_ImageGetHeight($image) Local $aPoints[4][2] = [[3, 0],[0, 0],[$iwidth, 0],[0, $iheight]] ; _GDIPlus_GraphicsFillPolygon2($hGraphic, $aPoints, $iTopLeftColor, 0) GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints, $iTopLeftColor) Local $aPoints[4][2] = [[3, 0],[$iwidth, 0],[$iwidth, $iheight],[0, $iheight]] ; _GDIPlus_GraphicsFillPolygon2($hGraphic, $aPoints, $iBotRightColor, 0) GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints, $iBotRightColor) For $n = 0 To $iBdr $iTrans = Round($n / $iBdr, 3) ;ConsoleWrite(" $iTrans = " & $iTrans & " $n = "& $n & @CRLF) _GDIPlus_GraphicsDrawImageRectRectTrans($hGraphic, $image, $n, $n, $iwidth - 2 * $n, $iheight - 2 * $n, $n, $n, $iwidth - 2 * $n, $iheight - 2 * $n, 2, $iTrans) Next Return EndFunc ;==>GDIPlus_AddBevel Func _GDIPlus_GraphicsDrawImageRectRectTrans($hGraphics, $hImage, $iSrcX, $iSrcY, $iSrcWidth = "", $iSrcHeight = "", _ $iDstX = "", $iDstY = "", $iDstWidth = "", $iDstHeight = "", $iUnit = 2, $nTrans = 1) Local $tColorMatrix, $x, $hImgAttrib, $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage) If $iSrcWidth = 0 Or $iSrcWidth = "" Then $iSrcWidth = $iW If $iSrcHeight = 0 Or $iSrcHeight = "" Then $iSrcHeight = $iH If $iDstX = "" Then $iDstX = $iSrcX If $iDstY = "" Then $iDstY = $iSrcY If $iDstWidth = "" Then $iDstWidth = $iSrcWidth If $iDstHeight = "" Then $iDstHeight = $iSrcHeight If $iUnit = "" Then $iUnit = 2 ;;create color matrix data $tColorMatrix = DllStructCreate("float[5];float[5];float[5];float[5];float[5]") ;blending values: $x = DllStructSetData($tColorMatrix, 1, 1, 1) * DllStructSetData($tColorMatrix, 2, 1, 2) * DllStructSetData($tColorMatrix, 3, 1, 3) * _ DllStructSetData($tColorMatrix, 4, $nTrans, 4) * DllStructSetData($tColorMatrix, 5, 1, 5) ;;create an image attributes object and update its color matrix $hImgAttrib = DllCall($ghGDIPDll, "int", "GdipCreateImageAttributes", "ptr*", 0) $hImgAttrib = $hImgAttrib[1] DllCall($ghGDIPDll, "int", "GdipSetImageAttributesColorMatrix", "ptr", $hImgAttrib, "int", 1, _ "int", 1, "ptr", DllStructGetPtr($tColorMatrix), "ptr", 0, "int", 0) ;draw image into graphic object with alpha blend DllCall($ghGDIPDll, "int", "GdipDrawImageRectRectI", "hwnd", $hGraphics, "hwnd", $hImage, "int", $iDstX, "int", _ $iDstY, "int", $iDstWidth, "int", $iDstHeight, "int", $iSrcX, "int", $iSrcY, "int", $iSrcWidth, "int", _ $iSrcHeight, "int", $iUnit, "ptr", $hImgAttrib, "int", 0, "int", 0) ;;clean up DllCall($ghGDIPDll, "int", "GdipDisposeImageAttributes", "ptr", $hImgAttrib) _GDIPlus_ImageAttributesDispose($hImgAttrib) Return EndFunc ;==>_GDIPlus_GraphicsDrawImageRectRectTrans Func GDIPlus_GraphicsFillPolygon($hGraphics, $aPoints, $iARGB = -1) Local $iI, $iCount, $pPoints, $tPoints, $aResult, $tmpError, $tmpExError $iCount = $aPoints[0][0] $tPoints = DllStructCreate("int[" & $iCount * 2 & "]") $pPoints = DllStructGetPtr($tPoints) For $iI = 1 To $iCount DllStructSetData($tPoints, 1, $aPoints[$iI][0], (($iI - 1) * 2) + 1) DllStructSetData($tPoints, 1, $aPoints[$iI][1], (($iI - 1) * 2) + 2) Next $hBrush = _GDIPlus_BrushCreateSolid($iARGB) $aResult = DllCall($ghGDIPDll, "int", "GdipFillPolygonI", "hWnd", $hGraphics, "hWnd", $hBrush, _ "ptr", $pPoints, "int", $iCount, "int", "FillModeAlternate") $tmpError = @error $tmpExError = @extended _GDIPlus_BrushDispose($hBrush) If $tmpError Then Return SetError($tmpError, $tmpExError, False) Return SetError($aResult[0], 0, $aResult[0] = 0) EndFunc ;==>GDIPlus_GraphicsFillPolygon 2015 - Still no flying cars, instead blankets with sleeves. Link to comment Share on other sites More sharing options...
UEZ Posted November 10, 2011 Share Posted November 10, 2011 The reason for the crash is that you call the function Func GDIPlus_TopBotFade($hGraphic, $image, $topless, $Botless, $TopColor, $iBotColor, $TotTrans = 1) with wrong parameter. $TopColor is not a brush handle for the function. Try this instead: Func GDIPlus_TopBotFade($hGraphic, $image, $topless, $Botless, $TopColor, $iBotColor, $TotTrans = 1, $hBrush = 0) Local $iwidth = _GDIPlus_ImageGetWidth($image) Local $iheight = _GDIPlus_ImageGetHeight($image) Local $aPoints[5][2] = [[4, 0],[0, 0],[$iwidth, 0],[$iwidth, $topless],[0, $topless]] _GDIPlus_GraphicsFillPolygon2($hGraphic, $aPoints, $hBrush, 0) ;~ GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints, $TopColor) Local $aPoints[5][2] = [[4, 0],[0, $iheight - $Botless],[$iwidth, $iheight - $Botless],[$iwidth, $iheight],[0, $iheight]] _GDIPlus_GraphicsFillPolygon2($hGraphic, $aPoints, $hBrush, 0) ;~ GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints, $iBotColor) For $n = 0 To $iheight - 1 If ($iheight - $n) <= $Botless Then ; Bottom invisible up $topless $iTrans = (($iheight - $n) / $Botless) ElseIf $n <= $topless Then ; Top invisible down $topless $iTrans = $n / $topless Else $iTrans = $TotTrans EndIf If $iTrans > $TotTrans Then $iTrans = $TotTrans _GDIPlus_GraphicsDrawImageRectRectTrans($hGraphic, $image, 1, $n, $iwidth, 1, 1, $n, $iwidth, 1, 2, $iTrans) Next Return EndFunc ;==>GDIPlus_TopBotFade Br, UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Lakes Posted November 10, 2011 Author Share Posted November 10, 2011 (edited) Thanks UEZ, donno how I missed that... Solved.expandcollapse popup#include <GDIPlus.au3> #include <WindowsConstants.au3> #include <GuiConstants.au3> #include <GDIP.au3> Global $width = 700 Global $height = 300 Global $iTrans $hwnd = GUICreate("test", $width, $height) GUISetState() If Not FileExists(@DesktopDir & "bitmap.png") Then InetGet("http://www.autoitscript.com/forum/uploads/monthly_10_2008/post-31256-1224504936_thumb.png", _ @DesktopDir & "bitmap.png") _GDIPlus_Startup() $graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd) _GDIPlus_GraphicsClear($graphics, 0xFF008800) $image = _GDIPlus_ImageLoadFromFile(@DesktopDir & "bitmap.png") $iwidth = _GDIPlus_ImageGetWidth($image) $iheight = _GDIPlus_ImageGetHeight($image) $hGraphicGUI = _GDIPlus_GraphicsCreateFromHWND($hwnd) $hBMPBuff = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphicGUI) $hGraphic = _GDIPlus_ImageGetGraphicsContext($hBMPBuff) $brush = _GDIPlus_BrushCreateSolid(0xFF000000) $family = _GDIPlus_FontFamilyCreate("Arial") $font = _GDIPlus_FontCreate($family, 24) $layout = _GDIPlus_RectFCreate(0, 250, $width, $height) $format = _GDIPlus_StringFormatCreate() _GDIPlus_StringFormatSetAlign($format, 2) _GDIPlus_GraphicsDrawStringEx($graphics, "Normal ", $font, $layout, $format, $brush) _GDIPlus_GraphicsDrawImageRect($graphics, $image, 480, 20, $iwidth, $iheight) _GDIPlus_StringFormatSetAlign($format, 1) _GDIPlus_GraphicsDrawStringEx($graphics, "Top and Bottom Fade ", $font, $layout, $format, $brush) GDIPlus_TopBotFade($hGraphic, $image, $iheight / 2 - 20, 30, 0xFF666666, 0xFF333333) _GDIPlus_GraphicsDrawImage($graphics, $hBMPBuff, 250, 20) _GDIPlus_StringFormatSetAlign($format, 0) _GDIPlus_GraphicsDrawStringEx($graphics, " Bevelled", $font, $layout, $format, $brush) ;GDIPlus_AddBevel($graphics, $image, 30, 0xFF606060, 0xFFAFAFAF) _GDIPlus_GraphicsDrawImage($graphics, $hBMPBuff, 20, 20) Do sleep(10) Until GUIGetMsg() = -3 _GDIPlus_ImageDispose($image) _GDIPlus_BrushDispose($brush) _GDIPlus_GraphicsDispose($graphics) _GDIPlus_GraphicsDispose($hGraphic) _WinAPI_DeleteObject($hBMPBuff) _GDIPlus_FontDispose($font) _GDIPlus_FontFamilyDispose($family) _GDIPlus_StringFormatDispose($format) _GDIPlus_Shutdown() Func GDIPlus_TopBotFade($hGraphic, $image, $topless, $Botless, $TopColor, $iBotColor, $TotTrans = 1, $hBrush = 0) Local $iwidth = _GDIPlus_ImageGetWidth($image) Local $iheight = _GDIPlus_ImageGetHeight($image) Local $aPoints[5][2] = [[4, 0],[0, 0],[$iwidth, 0],[$iwidth, $topless],[0, $topless]] _GDIPlus_GraphicsFillPolygon2($hGraphic, $aPoints, $hBrush, 0) Local $aPoints[5][2] = [[4, 0],[0, $iheight - $Botless],[$iwidth, $iheight - $Botless],[$iwidth, $iheight],[0, $iheight]] _GDIPlus_GraphicsFillPolygon2($hGraphic, $aPoints, $hBrush, 0) For $n = 0 To $iheight - 1 If ($iheight - $n) <= $Botless Then ; Bottom invisible up $topless $iTrans = (($iheight - $n) / $Botless) ElseIf $n <= $topless Then ; Top invisible down $topless $iTrans = $n / $topless Else $iTrans = $TotTrans EndIf If $iTrans > $TotTrans Then $iTrans = $TotTrans _GDIPlus_GraphicsDrawImageRectRectTrans($hGraphic, $image, 1, $n, $iwidth, 1, 1, $n, $iwidth, 1, 2, $iTrans) Next Return EndFunc ;==>GDIPlus_TopBotFade Func GDIPlus_AddBevel($graphics, $image, $iBdr, $iTopLeftColor, $iBotRightColor, $hBrush = 0) Local $iwidth = _GDIPlus_ImageGetWidth($image) Local $iheight = _GDIPlus_ImageGetHeight($image) Local $aPoints[4][2] = [[3, 0],[0, 0],[$iwidth, 0],[0, $iheight]] _GDIPlus_GraphicsFillPolygon2($hGraphic, $aPoints, $hBrush, 0) Local $aPoints[4][2] = [[3, 0],[$iwidth, 0],[$iwidth, $iheight],[0, $iheight]] _GDIPlus_GraphicsFillPolygon2($hGraphic, $aPoints, $hBrush, 0) For $n = 0 To $iBdr $iTrans = Round($n / $iBdr, 3) ;ConsoleWrite(" $iTrans = " & $iTrans & " $n = "& $n & @CRLF) _GDIPlus_GraphicsDrawImageRectRectTrans($hGraphic, $image, $n, $n, $iwidth - 2 * $n, $iheight - 2 * $n, $n, $n, $iwidth - 2 * $n, $iheight - 2 * $n, 2, $iTrans) Next Return EndFunc ;==>GDIPlus_AddBevel ; #FUNCTION# =================================================================================================== ; Name...........: _GDIPlus_GraphicsDrawImageRectRectTrans ; Description ...: Draw an Image object with transparency ; Syntax.........: _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hImage, $iSrcX, $iSrcY, [$iSrcWidth, _ ; [$iSrcHeight, [$iDstX, [$iDstY, [$iDstWidth, [$iDstHeight[, [$iUnit = 2]]]]]]]) ; Parameters ....: $hGraphics - Handle to a Graphics object ; $hImage - Handle to an Image object ; $iSrcX - The X coordinate of the upper left corner of the source image ; $iSrcY - The Y coordinate of the upper left corner of the source image ; $iSrcWidth - Width of the source image ; $iSrcHeight - Height of the source image ; $iDstX - The X coordinate of the upper left corner of the destination image ; $iDstY - The Y coordinate of the upper left corner of the destination image ; $iDstWidth - Width of the destination image ; $iDstHeight - Height of the destination image ; $iUnit - Specifies the unit of measure for the image ; $nTrans - Value range from 0 (Zero for invisible) to 1.0 (fully opaque) ; Return values .: Success - True ; Failure - False ; Author ........: Siao ; Modified.......: Malkey ; Remarks .......: ; Related .......: ; Link ..........; http://www.autoitscript.com/forum/index....=&showtopic=70573&view=findpos ; Example .......; Yes Func _GDIPlus_GraphicsDrawImageRectRectTrans($hGraphics, $hImage, $iSrcX, $iSrcY, $iSrcWidth = "", $iSrcHeight = "", _ $iDstX = "", $iDstY = "", $iDstWidth = "", $iDstHeight = "", $iUnit = 2, $nTrans = 1) Local $tColorMatrix, $x, $hImgAttrib, $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage) If $iSrcWidth = 0 Or $iSrcWidth = "" Then $iSrcWidth = $iW If $iSrcHeight = 0 Or $iSrcHeight = "" Then $iSrcHeight = $iH If $iDstX = "" Then $iDstX = $iSrcX If $iDstY = "" Then $iDstY = $iSrcY If $iDstWidth = "" Then $iDstWidth = $iSrcWidth If $iDstHeight = "" Then $iDstHeight = $iSrcHeight If $iUnit = "" Then $iUnit = 2 ;;create an image attributes object and update its color matrix Local $iColorAdjustType = 1, $fEnable = 1 $hImgAttrib = _GDIPlus_ImageAttributesCreate() ; #FUNCTION# ==================================================================================================================== ; Name...........: _GDIPlus_ColorMatrixCreateScale ; Description ...: Creates and initializes a scaling color matrix ; Syntax.........: _GDIPlus_ColorMatrixCreateScale($nRed, $nGreen, $nBlue[, $nAlpha = 1]) ; Parameters ....: $nRed - Red component scaling factor ; $nGreen - Green component scaling factor ; $nBlue - Blue component scaling factor ; $nAlpha - Alpha component scaling factor ; Return values .: Success - $tagGDIPCOLORMATRIX structure that contains a scaling color matrix ; Failure - 0 ; Remarks .......: A scaling color matrix is used to multiply components of a color by multiplier factors ;;create color matrix data $tColorMatrix = _GDIPlus_ColorMatrixCreateScale(1, 1, 1, $nTrans) $pColorMatrix = DllStructGetPtr($tColorMatrix) _GDIPlus_ImageAttributesSetColorMatrix($hImgAttrib, $iColorAdjustType, $fEnable, $pColorMatrix) ;draw image into graphic object with alpha blend ; #FUNCTION# =================================================================================================== ; Name...........: _GDIPlus_GraphicsDrawImageRectRectTrans ; Description ...: Draw an Image object with transparency ; Syntax.........: _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hImage, $iSrcX, $iSrcY, [$iSrcWidth, _ ; [$iSrcHeight, [$iDstX, [$iDstY, [$iDstWidth, [$iDstHeight[, [$iUnit = 2]]]]]]]) ; Parameters ....: $hGraphics - Handle to a Graphics object ; $hImage - Handle to an Image object ; $iSrcX - The X coordinate of the upper left corner of the source image ; $iSrcY - The Y coordinate of the upper left corner of the source image ; $iSrcWidth - Width of the source image ; $iSrcHeight - Height of the source image ; $iDstX - The X coordinate of the upper left corner of the destination image ; $iDstY - The Y coordinate of the upper left corner of the destination image ; $iDstWidth - Width of the destination image ; $iDstHeight - Height of the destination image ; $iUnit - Specifies the unit of measure for the image ; $nTrans - Value range from 0 (Zero for invisible) to 1.0 (fully opaque) ; Return values .: Success - True ; Failure - False ; Author ........: Siao ; Modified.......: Malkey ; Remarks .......: ; Related .......: ; Link ..........; http://www.autoitscript.com/forum/index....=&showtopic=70573&view=findpos ; Example .......; Yes DllCall($ghGDIPDll, "int", "GdipDrawImageRectRectI", "hwnd", $hGraphics, "hwnd", $hImage, "int", $iDstX, "int", _ $iDstY, "int", $iDstWidth, "int", $iDstHeight, "int", $iSrcX, "int", $iSrcY, "int", $iSrcWidth, "int", _ $iSrcHeight, "int", $iUnit, "ptr", $hImgAttrib, "int", 0, "int", 0) ;;clean up _GDIPlus_ImageAttributesDispose($hImgAttrib) Return EndFunc ;==>_GDIPlus_GraphicsDrawImageRectRectTransLink to original example for refernce is Edited November 10, 2011 by Lakes 2015 - Still no flying cars, instead blankets with sleeves. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now