Jump to content
wakillon

PostStampBuilder

Recommended Posts

wakillon

Glad you like it !

Thanks.

  • Like 1

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
UEZ

The save process takes too long.

I modified your script a little bit:

#NoTrayIcon

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
;~ #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#AutoIt3Wrapper_Icon=C:\ProgramData\PostStampBuilder\Stamp2.ico
#AutoIt3Wrapper_Outfile=PostStampBuilder.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_UPX_Parameters=--best --lzma
#AutoIt3Wrapper_Res_Description=Postage Stamp Builder
#AutoIt3Wrapper_Res_Fileversion=1.0.4
#AutoIt3Wrapper_Res_LegalCopyright=wakillon
#AutoIt3Wrapper_Res_Field='Compiled with'|'AutoIt Version 3.3.14.2'
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/so /pe /rm
#AutoIt3Wrapper_Run_After=del "%scriptfile%_stripped.au3"
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#Region    ;************ Includes ************
#include <WindowsConstants.au3>
#Include <StaticConstants.au3>
#Include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#Include <WinAPIProc.au3>
#include <GDIPlus.au3>
#Include <Misc.au3>
#EndRegion ;************ Includes ************

Opt ( 'GUIOnEventMode', 1 )

#Region ------ Global Variables ------------------------------
Global $hGuiMain, $idLabelPreview, $idButtonSave, $idLabelImageName, $idLabelSize, $idButtonChooseColor, $idComboPerforationsCount
Global $idLabelOriginalSize, $idLabelOutputSize, $aIdRadioType[3], $idLabelDropTxt, $idSliderRescale, $idLabelScale, $idButtonExit, $idButtonOpen
Global $hGuiRef, $hGraphic, $sCurrentFilePath, $iScale, $iSave, $sFileSaveDialog, $aPosBak, $iAdlib, $iOpen, $iChoose, $sFileOpenDialog, $Color
Global $hImage, $hBmp_Buffer, $hGfx_Buffer, $hGraphicPreview, $hClonePreview, $SerratedEdgeColor = 0xFFFFFFFF, $aIdLabelColor[6]
Global $iHCount, $iVCount, $iHWidth, $iVWidth, $iGuiWidth, $iGuiHeight, $iImageWidth, $iImageHeight, $iLabelPreviewSize = 560, $x, $y, $w, $h, $iTriangleMargin = 10, $iPerforationsType = 0
Global $sInstallDir = @HomeDrive & '\ProgramData\PostStampBuilder'
#EndRegion --- Global Variables ------------------------------

#Region ------ Init ------------------------------
AutoItWinSetTitle ( 'P0st.Stamp.Bu1ld3r' )
If _ScriptIsAlreadyRunning() Then Exit
_GDIPlus_Startup()
Stamp2Ico ( 'Stamp2.ico', $sInstallDir )
Choosecolorgif ( 'choosecolor.gif', $sInstallDir )
Saveaspnggif ( 'saveaspng.gif', $sInstallDir )
Opengif ( 'open.gif', $sInstallDir )
Exitgif ( 'exit.gif', $sInstallDir )
_Fluidwatercolorpaperjpg ( 'paper.jpg', $sInstallDir )
Global $hImg = _GDIPlus_ImageLoadFromFile( $sInstallDir & "\paper.jpg")
Global $hTexture_Paper = _GDIPlus_TextureCreate($hImg)
_GDIPlus_ImageDispose($hImg)
_GuiMain()
#EndRegion --- Init ------------------------------

#Region ------ Main Loop ------------------------------
While 1
    If $iSave = 1 Then
        $iSave = 0
        $sFileSaveDialog = FileSaveDialog ( 'Save As PNG', @WorkingDir, 'Image Files (*.png)', 2+16, 'Save.png', $hGuiMain )
        If Not @error Then
            If _FileGetExtByFullPath ( $sFileSaveDialog ) <> 'png' Then $sFileSaveDialog &= '.png'
            _ImageSaveWithTransparency ( $sFileSaveDialog )
            If Not @error Then
;~              ShellExecute ( $sFileSaveDialog )
            Else
                MsgBox ( 262144+16, 'Error', 'Sorry !' & @CRLF & 'An Unknow Error occurred !', 4 )
            EndIf
        EndIf
    EndIf
    If $iOpen = 1 Then
        $iOpen = 0
        $sFileOpenDialog = FileOpenDialog ( 'Select an Image', '', 'Image Files (*.bmp;*.gif;*.jpg;*.png)', 1, '', $hGuiMain )
        If Not @error Then
            Switch _ImageCheck ( $sFileOpenDialog  )
                Case 1
                    If $idLabelDropTxt Then
                        GUICtrlDelete ( $idLabelDropTxt )
                        $idLabelDropTxt = 0
                    EndIf
                    $sCurrentFilePath = $sFileOpenDialog
                    _GuiRef()
                Case 0
                    MsgBox ( 262144+16, 'Error', 'Unsupported File !', 5 )
                Case -1
                    MsgBox ( 262144+16, 'Error', 'Dimensions File are too small !', 5 )
            EndSwitch
        EndIf
    EndIf
    If $iChoose = 1 Then
        $iChoose =0
        _GuiCtrlPicButton_SimulateAction ( $hGuiMain, $idButtonChooseColor )
        $Color = _ChooseColor ( 2, 0, 0, $hGuiMain )
        If $Color <> -1 Then
            $SerratedEdgeColor = '0x' & Hex ( BitOR ( 0xFF000000, $Color ), 8 )
            _GuiRef()
            _ImageDraw()
        EndIf
    EndIf
    Sleep ( 250 )
WEnd
#EndRegion --- Main Loop ------------------------------

Func _ArrayAddEx ( ByRef $avArray, $vValue )
    If Not IsArray ( $avArray ) Then Return SetError ( 1, 0, -1 )
    If UBound ( $avArray, 0 ) <> 1 Then Return SetError ( 2, 0, -1 )
    Local $iUBound = UBound ( $avArray )
    ReDim $avArray[$iUBound + 1]
    $avArray[$iUBound] = $vValue
    Return $iUBound
EndFunc ;==> _ArrayAddEx()

Func _Base64Decode ( $input_string ) ; by trancexx
    Local $struct = DllStructCreate ( 'int' )
    Local $a_Call = DllCall ( 'Crypt32.dll', 'int', 'CryptStringToBinary', 'str', $input_string, 'int', 0, 'int', 1, 'ptr', 0, 'ptr', DllStructGetPtr ( $struct, 1 ), 'ptr', 0, 'ptr', 0 )
    If @error Or Not $a_Call[0] Then Return SetError ( 1, 0, '' )
    Local $a = DllStructCreate ( 'byte[' & DllStructGetData ( $struct, 1 ) & ']' )
    $a_Call = DllCall ( 'Crypt32.dll', 'int', 'CryptStringToBinary', 'str', $input_string, 'int', 0, 'int', 1, 'ptr', DllStructGetPtr ( $a ), 'ptr', DllStructGetPtr ( $struct, 1 ), 'ptr', 0, 'ptr', 0 )
    If @error Or Not $a_Call[0] Then Return SetError ( 2, 0, '' )
    Return DllStructGetData ( $a, 1 )
EndFunc ;==> _Base64Decode()

Func _FileGetExtByFullPath ( $sFullPath=@ScriptFullPath )
    Local $aFileName = StringSplit ( $sFullPath, '.' )
    If Not @error Then Return $aFileName[$aFileName[0]]
EndFunc ;==> _FileGetExtByFullPath()

Func _FileGetFullNameByFullPath ( $sFullPath )
    Local $aFileName = StringSplit ( $sFullPath, '\' )
    If Not @error Then Return $aFileName[$aFileName[0]]
EndFunc ;==> _FileGetFullNameByFullPath()

Func _GuiCtrlPicButton_RestorePos()
    If Not _IsPressedEx ( '01' ) Then ; wait left mouse button is not pressed.
        If IsArray ( $aPosBak ) Then
            GUICtrlSetPos ( $aPosBak[4], $aPosBak[0], $aPosBak[1], $aPosBak[2], $aPosBak[3] )
            $aPosBak = 0
        EndIf
        $iAdlib = 0
        AdlibUnRegister ( '_GuiCtrlPicButton_RestorePos' )
    EndIf
EndFunc ;==> _GuiCtrlPicButton_RestorePos()

Func _GuiCtrlPicButton_SimulateAction ( $hWnd, $iCtrlId, $iFlag=1 )
    If $iAdlib = 1 Then Return
    Local $aPos = ControlGetPos ( $hWnd, '', $iCtrlId )
    If Not @error Then
        GUICtrlSetPos ( $iCtrlId, $aPos[0]+$iFlag, $aPos[1]+$iFlag, $aPos[2]-2*$iFlag, $aPos[3]-2*$iFlag )
        $aPosBak = $aPos
        _ArrayAddEx ( $aPosBak, $iCtrlId )
        AdlibRegister ( '_GuiCtrlPicButton_RestorePos', 150 )
        $iAdlib = 1
    EndIf
    $aPos = 0
EndFunc ;==> _GuiCtrlPicButton_SimulateAction()

Func _Exit()
    If $hImage Then _GDIPlus_ImageDispose ( $hImage )
    _GDIPlus_GraphicsDispose ( $hGfx_Buffer )
    _GDIPlus_BitmapDispose ( $hBmp_Buffer )
    _GDIPlus_GraphicsDispose ( $hGraphic )
    _GDIPlus_BrushDispose ( $hTexture_Paper )
    _GDIPlus_Shutdown()
    GUIDelete ( $hGuiMain )
    Exit
EndFunc ;==> _Exit()

Func _GuiEvents()
    Switch @GUI_CtrlId
        Case $GUI_EVENT_CLOSE
            _Exit()
        Case $idButtonExit
            _GuiCtrlPicButton_SimulateAction ( $hGuiMain, $idButtonExit )
            Sleep ( 250 )
            _Exit()
        Case $GUI_EVENT_RESTORE
            _ImageDraw()
            If $hClonePreview Then _GDIPlus_GraphicsDrawImageRectRect ( $hGraphicPreview, $hClonePreview, 0, 0, $iGuiWidth, $iGuiHeight, $x, $y, $w, $h )
        Case $GUI_EVENT_DROPPED
            If @GUI_DropId = $idLabelPreview Then
                Switch _ImageCheck ( @GUI_DRAGFILE  )
                    Case 1
                        If $idLabelDropTxt Then
                            GUICtrlDelete ( $idLabelDropTxt )
                            $idLabelDropTxt = 0
                        EndIf
                        $sCurrentFilePath = @GUI_DRAGFILE
                        _GuiRef()
                    Case 0
                        MsgBox ( 262144+16, 'Error', 'Unsupported File !', 5 )
                    Case -1
                        MsgBox ( 262144+16, 'Error', 'Dimensions File are too small !', 5 )
                EndSwitch
            EndIf
        Case $idButtonSave
            _GuiCtrlPicButton_SimulateAction ( $hGuiMain, $idButtonSave )
            If $hImage Then $iSave = 1
            Sleep ( 250 )
        Case $idButtonChooseColor
            $iChoose = 1
        Case $idComboPerforationsCount
            If $hImage Then
                GUICtrlSetOnEvent ( $idComboPerforationsCount, '_NoEvents' )
                GUICtrlSetState ( $idComboPerforationsCount, $GUI_DISABLE )
                _GuiRef()
                _ImageDraw()
                Sleep ( 50 )
                GUICtrlSetState ( $idComboPerforationsCount, $GUI_ENABLE )
                GUICtrlSetOnEvent ( $idComboPerforationsCount, '_GuiEvents' )
                ControlFocus ( $hGuiMain, '', $idComboPerforationsCount )
            EndIf
        Case $aIdRadioType[0], $aIdRadioType[1], $aIdRadioType[2]
            $iPerforationsType = @GUI_CtrlId - $aIdRadioType[0]
            If $hImage Then
                _GuiRef()
                _ImageDraw()
            EndIf
        Case $aIdLabelColor[0] To $aIdLabelColor[5]
            Local $aColor[6] = [0xFFFFFF, 0xFFFF00, 0xFF0000, 0x00FF00, 0x0000FF, 0x000000]
            $SerratedEdgeColor =  '0x' & Hex ( BitOR ( 0xFF000000, $aColor[@GUI_CtrlId - $aIdLabelColor[0]] ), 8 )
            _GuiRef()
            _ImageDraw()
        Case $idSliderRescale
            $iScale = GUICtrlRead ( $idSliderRescale )/100
            If $hImage Then ControlSetText ( $hGuiMain, '', $idLabelOutputSize,  Int ( $iGuiWidth * $iScale ) & 'x' & Int ( $iGuiHeight * $iScale ) )
            ControlSetText ( $hGuiMain, '', $idLabelScale,  StringFormat ( '%03.2f', $iScale ) )
        Case $idButtonOpen
            _GuiCtrlPicButton_SimulateAction ( $hGuiMain, $idButtonOpen )
            $iOpen = 1
            Sleep ( 250 )
    EndSwitch
EndFunc ;==> _GuiEvents()

Func _GuiMain()
    $hGuiMain = GUICreate ( 'PostStampBuilder v1.0.4', 820, 600, -1, -1, -1, $WS_EX_ACCEPTFILES )
    GUISetOnEvent ( $GUI_EVENT_CLOSE, '_GuiEvents' )
    GUISetOnEvent ( $GUI_EVENT_DROPPED, '_GuiEvents' )
    GUISetOnEvent ( $GUI_EVENT_RESTORE, '_GuiEvents' )
    GUISetIcon ( $sInstallDir & '\Stamp2.ico' )
    GUISetBkColor ( 0x444444 )
    ;
    $idLabelSize = GUICtrlCreateLabel ( 'Preview', 20, 1, $iLabelPreviewSize, 18, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    $idLabelPreview = GUICtrlCreateLabel ( '', 20, 20, $iLabelPreviewSize, $iLabelPreviewSize, 0x01 )
    GUICtrlSetState ( -1, $GUI_DROPACCEPTED )
    GUICtrlSetBkColor ( -1, 0xABCDEF )
    GUICtrlSetColor ( -1, 0xF8D381 )
    GUICtrlSetState ( -1, $GUI_DISABLE )
    $hGraphicPreview = _GDIPlus_GraphicsCreateFromHWND ( GUICtrlGetHandle ( -1 ) )
    ;
    $idLabelDropTxt = GUICtrlCreateLabel ( 'Drag && Drop an image here.', 20, $iLabelPreviewSize/3, $iLabelPreviewSize, 40, 0x01 )
    GUICtrlSetFont ( -1, 14, 800 )
    GUICtrlSetBkColor ( -1, 0xABCDEF )
    GUICtrlSetState ( -1, $GUI_DISABLE )
    ;
    $idLabelImageName = GUICtrlCreateLabel ( '', 20, 21 +$iLabelPreviewSize, $iLabelPreviewSize, 18, 0x01 )
    GUICtrlSetFont ( -1, 10, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    GUICtrlCreateLabel ( 'Original Dimension', 600, 20, 200, 20, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    $idLabelOriginalSize = GUICtrlCreateLabel ( '', 600, 40, 200, 20, BitOR ( $SS_SUNKEN, 0x01 ) )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFF00 )
    ;
    GUICtrlCreateLabel ( 'Output Dimension', 600, 70, 200, 20, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    $idLabelOutputSize = GUICtrlCreateLabel ( '', 600, 90, 200, 20, BitOR ( $SS_SUNKEN, 0x01 ) )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFF00 )
    ;
    GUICtrlCreateLabel ( 'Serrated Edges Color', 600, 130, 200, 20, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    Local $aColor[6] = [0xFFFFFF, 0xFFFF00, 0xFF0000, 0x00FF00, 0x0000FF, 0x000000]
    For $i = 0 To 5
        $aIdLabelColor[$i] = GUICtrlCreateLabel ( '', 600+$i*37, 150, 15, 15, $SS_SUNKEN )
        GUICtrlSetOnEvent ( -1, '_GuiEvents' )
        GUICtrlSetBkColor ( -1, $aColor[$i] )
    Next
    ;
    $idButtonChooseColor = GUICtrlCreatePic ( $sInstallDir & '\choosecolor.gif', 600, 175, 200, 24 )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    ;
    GUICtrlCreateLabel ( 'Horizontal Perforation Count', 600, 215, 200, 20, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    $idComboPerforationsCount = GUICtrlCreateCombo ( '', 600, 235, 200, 20, $CBS_DROPDOWNLIST, $WS_EX_RIGHT )
    GUICtrlSetData ( -1, '10|15|20|25|30', '20' )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    GUICtrlSetFont ( -1, 11, 800 )
    ;
    GUICtrlCreateGroup ( ' Perforations Type ', 600, 280, 200, 130 )
    DllCall ( 'UxTheme.dll', 'int', 'SetWindowTheme', 'hwnd', GUICtrlGetHandle ( -1 ), 'wstr', 0, 'wstr', 0 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    Local $aType[3] = ['Rounded', 'Square', 'Triangle']
    For $i = 0 To 2
        $aIdRadioType[$i] = GUICtrlCreateRadio ( ' ' & $aType[$i], 650, 310+$i*30, 100, 20 )
        DllCall ( 'UxTheme.dll', 'int', 'SetWindowTheme', 'hwnd', GUICtrlGetHandle ( -1 ), 'wstr', 0, 'wstr', 0 )
        GUICtrlSetOnEvent ( -1, '_GuiEvents' )
        GUICtrlSetFont ( -1, 11, 800 )
        If Not $i Then GUICtrlSetState ( -1, $GUI_CHECKED )
        GUICtrlSetColor ( -1, 0xFFFFFF )
    Next
    ;
    GUICtrlCreateLabel ( 'Rescale Image      X ', 600, 420, 160, 20, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    $idSliderRescale = GUICtrlCreateSlider ( 600, 440, 200, 20, BitOR ( 0x0004, 0x0010 ) ) ; $TBS_TOP $TBS_NOTICKS
    GUICtrlSetLimit ( -1, 2.0*100, 0.1*100 )
    GUICtrlSetData ( -1, 1*100 )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    GUICtrlSetBkColor ( -1, 0x444444 )
    ;
    $iScale = GUICtrlRead ( $idSliderRescale )/100
    $idLabelScale = GUICtrlCreateLabel ( StringFormat ( '%03.2f', $iScale ), 760, 420, 40, 20, $SS_SUNKEN, $WS_EX_RIGHT )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFF00 )
    ;
    $idButtonSave = GUICtrlCreatePic ( $sInstallDir & '\saveaspng.gif', 600, 476, 200, 24 )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    ;
    $idButtonOpen = GUICtrlCreatePic ( $sInstallDir & '\open.gif', 600, 516, 200, 24 )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    ;
    $idButtonExit = GUICtrlCreatePic ( $sInstallDir & '\Exit.gif', 600, 556, 200, 24 )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    ;
    GUISetState ( @SW_SHOW, $hGuiMain )
    GUIRegisterMsg ( $WM_PAINT, '_WM_PAINT' )
    GUIRegisterMsg ( $WM_HSCROLL, '_WM_HSCROLL' )
EndFunc ;==> _GuiMain()

Func _GuiRef() ; this hidden gui is the reference for create the preview and for save Image to PNG.
    If Not FileExists ( $sCurrentFilePath ) Then Return
    ControlSetText ( $hGuiMain, '', $idLabelImageName, _FileGetFullNameByFullPath ( $sCurrentFilePath ) )
    If $hImage Then _GDIPlus_ImageDispose ( $hImage )
    $hImage = _GDIPlus_ImageLoadFromFile ( $sCurrentFilePath )
    $iImageWidth = _GDIPlus_ImageGetWidth ( $hImage )
    $iImageHeight = _GDIPlus_ImageGetHeight ( $hImage )
    ControlSetText ( $hGuiMain, '', $idLabelOriginalSize,  $iImageWidth & 'x' & $iImageHeight )
    $iHCount = GUICtrlRead ( $idComboPerforationsCount ) ; Horizontal Perforations count.
    $iVCount = Int ( $iHCount*$iImageHeight/$iImageWidth ) ; Vertical Perforations count.
    Switch $iPerforationsType
        Case 0, 1
            $iHWidth = $iImageWidth/( $iHCount*1.5 -1.5 ) ; Horizontal Perforations Size
            $iVWidth = $iImageHeight/( $iVCount*1.5 -1.5 ) ; Vertical Perforations Size
            $iGuiWidth = Int ( $iImageWidth +2*$iHWidth ) ; gui width for image + Left and right serrated edges
            $iGuiHeight = Int ( $iImageHeight +2*$iVWidth ) ; gui height for image + top and bottom serrated edges
        Case 2
            $iTriangleMargin = Int ( Sqrt ( $iImageWidth +$iImageHeight )/2 )
            ConsoleWrite ( '+->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $iTriangleMargin : ' & $iTriangleMargin & @Crlf )
            $iHWidth = ($iImageWidth +$iTriangleMargin*2)/( $iHCount ) ; Horizontal Perforations Size
            $iVWidth = ($iImageHeight +$iTriangleMargin*2)/( $iVCount ) ; Vertical Perforations Size
            $iGuiWidth = Int ( $iImageWidth +$iTriangleMargin*2 +$iHWidth ) ; gui width for image + Left and right serrated edges
            $iGuiHeight = Int ( $iImageHeight +$iTriangleMargin*2 +$iVWidth ) ; gui height for image + top and bottom serrated edges
    EndSwitch
    $iScale = GUICtrlRead ( $idSliderRescale )/100
    ControlSetText ( $hGuiMain, '', $idLabelOutputSize,  Int ( $iGuiWidth * $iScale ) & 'x' & Int ( $iGuiHeight * $iScale ) )
    If $hGuiRef Then
        GUISwitch ( $hGuiRef )
        GUIRegisterMsg ( $WM_PAINT, '' )
        _GDIPlus_GraphicsDispose ( $hGfx_Buffer )
        _GDIPlus_BitmapDispose ( $hBmp_Buffer )
        _GDIPlus_GraphicsDispose ( $hGraphic )
        $hGfx_Buffer = 0
        $hBmp_Buffer = 0
        $hGraphic = 0
        GUIDelete ( $hGuiRef )
        $hGuiRef = 0
    EndIf
    $hGuiRef = GUICreate ( '', $iGuiWidth, $iGuiHeight, -1, -1, $WS_POPUP, BitOR ( $WS_EX_TOPMOST, $WS_EX_LAYERED ) )
    _WinAPI_SetLayeredWindowAttributes ( $hGuiRef, 0xFFABCDEF, 255 ) ; set gui transparency
;~  GUISetState()
    GUIRegisterMsg ( $WM_PAINT, '_WM_PAINT' )
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ( $hGuiRef )
    $hBmp_Buffer = _GDIPlus_BitmapCreateFromGraphics ( $iGuiWidth, $iGuiHeight, $hGraphic )
    $hGfx_Buffer = _GDIPlus_ImageGetGraphicsContext ( $hBmp_Buffer )
    _ImagePreviewSet()
EndFunc ;==> _GuiRef()

Func _ImageCheck ( $sFilePath )
    Local $hImage = _GDIPlus_ImageLoadFromFile ( $sFilePath )
    Local $iImageType = _GDIPlus_ImageGetType ( $hImage )
    Local $iImageWidth = _GDIPlus_ImageGetWidth ( $hImage )
    Local $iImageHeight = _GDIPlus_ImageGetHeight ( $hImage )
    _GDIPlus_ImageDispose ( $hImage )
    Switch $iImageType
        Case $GDIP_IMAGETYPE_UNKNOWN
            Return 0
        Case $GDIP_IMAGETYPE_BITMAP ; BMP, PNG, GIF, JPEG, TIFF, ICO, EXIF
            If $iImageWidth < 128 Or $iImageHeight < 128 Then Return -1
            Return 1
        Case $GDIP_IMAGETYPE_METAFILE ; EMF, WMF
            Return 0
    EndSwitch
EndFunc ;==> _ImageCheck()

Func _ImageDraw()
    If Not $hGfx_Buffer Then Return
    If $hImage Then
        Switch $iPerforationsType
            Case 2
                _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth/2 +$iTriangleMargin, $iVWidth/2 +$iTriangleMargin, $iImageWidth, $iImageHeight )
            Case Else
                _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth, $iVWidth, $iImageWidth, $iImageHeight )
        EndSwitch
    EndIf
EndFunc ;==> _ImageDraw()

Func _ImagePreviewSet()
;~  _GDIPlus_GraphicsClear ( $hGfx_Buffer, $SerratedEdgeColor ) ; serrated edges color
    Switch $iPerforationsType
        Case 0
            _PostStampCreateRoundSerration ( $hImage )
        Case 1
            _PostStampCreateRectangleSerration ( $hImage )
        Case 2
            _PostStampCreateTriangleSerration ( $hImage )
    EndSwitch
    If $hClonePreview Then _GDIPlus_ImageDispose ( $hClonePreview )
    $hClonePreview = _GDIPlus_BitmapCloneArea ( $hBmp_Buffer, 0, 0, $iGuiWidth, $iGuiHeight, $GDIP_PXF32ARGB )
    Local $iRatio, $iMargin = 20
    If $iGuiWidth >= $iLabelPreviewSize Or $iGuiHeight >= $iLabelPreviewSize Then
        If $iGuiWidth >= $iGuiHeight Then
            $iRatio = $iLabelPreviewSize/$iGuiWidth
        Else
            $iRatio = $iLabelPreviewSize/$iGuiHeight
        EndIf
    Else
        $iRatio = 1
        $iMargin = 0
    EndIf
    $w = Int ( $iGuiWidth*$iRatio -$iMargin )
    $h = Int ( $iGuiHeight*$iRatio -$iMargin )
    $x = Int ( ( $iLabelPreviewSize - $w )/2 )
    $y = Int ( ( $iLabelPreviewSize - $h )/2 )
    ControlSetText ( $hGuiMain, '', $idLabelSize, 'Preview in ' & $w & 'x' & $h )
    _GDIPlus_GraphicsClear ( $hGraphicPreview, 0xFFABCDEF )
    _GDIPlus_GraphicsDrawImageRectRect ( $hGraphicPreview, $hClonePreview, 0, 0, $iGuiWidth, $iGuiHeight, $x, $y, $w, $h )
EndFunc ;==> _ImagePreviewSet()

Func _ImageSaveWithTransparency ( $sPngFilePath )
    Local $hClone = _GDIPlus_BitmapCloneArea ( $hBmp_Buffer, 0, 0, $iGuiWidth, $iGuiHeight, $GDIP_PXF32ARGB )
    If Not $hClone Then Return SetError ( 1, 0, 0 )
;~  Local $tBitmapData = _GDIPlus_BitmapLockBits ( $hClone, 0, 0, $iGuiWidth, $iGuiHeight, $GDIP_ILMWRITE, $GDIP_PXF32ARGB )
;~  Local $tBuffer = DllStructCreate ( 'byte[' & $iGuiHeight * $iGuiWidth * 4 & ']', DllStructGetData ( $tBitmapData, 'Scan0' ) )
;~  Local $Data = DllStructGetData ( $tBuffer, 1 )
;~  ConsoleWrite ( 'StringLen ( $Data ) : ' & StringLen ( $Data ) & @Crlf )
    Local $hSplash
;~  If StringLen ( $Data ) > 10^7 Then
        ; With High dimensions, SplashText is displayed for avoid to see the main gui not responding...
        $hSplash = SplashTextOn ( 'PostStampBuilder', @CRLF & 'Please Wait' & @CRLF & 'While Saving Image' & @CRLF & 'to PNG...', 500, 300, -1, -1, 0, 'Comic Sans MS', 32, 800 )
        GUISetState ( @SW_HIDE, $hGuiMain )
;~  EndIf
;~  Local $hTimerInit = TimerInit()
;~  Local $sSRER = StringRegExpReplace ( StringTrimLeft ( $Data, 2 ), '(.{8})', '\1 ' )
;~  ConsoleWrite ( '!-->-- [' & @ScriptLineNumber & '] TimerDiff StringRegExpReplace : ' & TimerDiff ( $hTimerInit ) & @Crlf )
;~  Sleep ( 250 )
;~  $hTimerInit = TimerInit()
;~  Local $SRER = StringRegExpReplace ( $sSRER, '(EFCDABFF)', 'EFCDAB00' )
;~  Sleep ( 250 )
;~  DllStructSetData ( $tBuffer, 1, '0x' & StringStripWS ( $SRER, 8 ) )
;~  ConsoleWrite ( '!-->-- [' & @ScriptLineNumber & '] TimerDiff DllStructSetData : ' & TimerDiff ( $hTimerInit ) & @Crlf )
;~  $sSRER = 0
;~  _GDIPlus_BitmapUnlockBits ( $hClone, $tBitmapData )
;~  $tBuffer = 0
;~  $tBitmapData = 0
    $iScale = GUICtrlRead ( $idSliderRescale )/100
    Local $hBitmap_Scaled = _GDIPlus_ImageScale ( $hClone, $iScale, $iScale )
    _GDIPlus_ImageDispose ( $hClone )
    If FileExists ( $sPngFilePath ) Then FileDelete ( $sPngFilePath )
    _GDIPlus_ImageSaveToFileEx ( $hBitmap_Scaled, $sPngFilePath, _GDIPlus_EncodersGetCLSID ( 'PNG' ) ) ; do not use gif!
    _GDIPlus_BitmapDispose ( $hBitmap_Scaled )
    _WinAPI_EmptyWorkingSet()
    Sleep( 500 )
    If $hSplash Then
        SplashOff()
        GUISetState ( @SW_SHOW, $hGuiMain )
    EndIf
    _ImagePreviewSet()
    Return SetError ( @error, 0, FileExists ( $sPngFilePath ) )
EndFunc ;==> _ImageSaveWithTransparency()

Func _IsPressedEx ( $sHexKey )
    Local $aRet = DllCall ( 'user32.dll', 'short', 'GetAsyncKeyState', 'int', '0x' & $sHexKey )
    If @error Then Return SetError ( @error, @extended, False )
    Return BitAND ( $aRet[0], 0x8000 ) <> 0
EndFunc ;==> _IsPressedEx()

Func _LzntDecompress ( $bBinary ); by trancexx
    $bBinary = Binary ( $bBinary )
    Local $tInput = DllStructCreate ( 'byte[' & BinaryLen ( $bBinary ) & ']' )
    DllStructSetData ( $tInput, 1, $bBinary )
    Local $tBuffer = DllStructCreate ( 'byte[' & 16*DllStructGetSize ( $tInput ) & ']' )
    Local $a_Call = DllCall ( 'ntdll.dll', 'int', 'RtlDecompressBuffer', 'ushort', 2, 'ptr', DllStructGetPtr ( $tBuffer ), 'dword', DllStructGetSize ( $tBuffer ), 'ptr', DllStructGetPtr ( $tInput ), 'dword', DllStructGetSize ( $tInput ), 'dword*', 0 )
    If @error Or $a_Call[0] Then Return SetError ( 1, 0, '' )
    Local $tOutput = DllStructCreate ( 'byte[' & $a_Call[6] & ']', DllStructGetPtr ( $tBuffer ) )
    Return SetError ( 0, 0, DllStructGetData ( $tOutput, 1 ) )
EndFunc ;==> _LzntDecompress()

Func _NoEvents()
    ;
EndFunc ;==> _NoEvents()

Func _PostStampCreateRectangleSerration ( $hImage )
    Local Const $hBmp = _GDIPlus_BitmapCreateFromScan0( $iGuiWidth, $iGuiHeight )
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext( $hBmp )
;~  _GDIPlus_GraphicsClear( $hCtxt, $SerratedEdgeColor )
    _GDIPlus_GraphicsFillRect( $hCtxt, 0, 0, $iGuiWidth, $iGuiHeight, $hTexture_Paper )
    Local $hBrush = _GDIPlus_BrushCreateSolid ( 0xFFABCDEF )
    Local $hPath = _GDIPlus_PathCreate()
    For $i = 0 To $iHCount -1 ; top & bottom
        _GDIPlus_PathAddRectangle ( $hPath, $iHWidth*( 1.5+3*$i )/2, -$iHWidth/2, $iHWidth/2, $iHWidth )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddRectangle ( $hPath, $iHWidth*( 1.5+3*$i )/2, $iGuiHeight -$iHWidth/2, $iHWidth/2, $iHWidth )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next
    For $i = 0 To $iVCount -1 ; Left & right
        _GDIPlus_PathAddRectangle ( $hPath, -$iVWidth/2, $iVWidth*( 1.5+3*$i )/2, $iVWidth, $iVWidth/2 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddRectangle ( $hPath, $iGuiWidth -$iVWidth/2, $iVWidth*( 1.5+3*$i )/2, $iVWidth, $iVWidth/2 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next

    Local Const $hIA = _GDIPlus_ImageAttributesCreate()
    Local $aRemapTable[2][2]
    $aRemapTable[0][0] = 1
    $aRemapTable[1][0] = 0xFFABCDEF
    $aRemapTable[1][1] = 0x00000000
    _GDIPlus_ImageAttributesSetRemapTable($hIA, 1, True, $aRemapTable)

    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hBmp, 0, 0, $iGuiWidth, $iGuiHeight, 0, 0, $iGuiWidth, $iGuiHeight, $hIA )
    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth, $iVWidth, $iImageWidth, $iImageHeight )
    _GDIPlus_PathDispose ( $hPath )
    _GDIPlus_BrushDispose ( $hBrush )
    _GDIPlus_ImageAttributesDispose( $hIA )
    _GDIPlus_GraphicsDispose( $hCtxt  )
    _GDIPlus_BitmapDispose( $hBmp )
EndFunc ;==> _PostStampCreateRectangleSerration()

Func _PostStampCreateRoundSerration ( $hImage )
    Local Const $hBmp = _GDIPlus_BitmapCreateFromScan0( $iGuiWidth, $iGuiHeight )
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext( $hBmp )
;~  _GDIPlus_GraphicsClear( $hCtxt, $SerratedEdgeColor )
    _GDIPlus_GraphicsFillRect( $hCtxt, 0, 0, $iGuiWidth, $iGuiHeight, $hTexture_Paper )
    Local $hBrush = _GDIPlus_BrushCreateSolid ( 0xFFABCDEF )
    Local $hPath = _GDIPlus_PathCreate()
    For $i = 0 To $iHCount -1 ; top & bottom
        _GDIPlus_PathAddArc ( $hPath, $iHWidth*( 1+3*$i )/2, -$iHWidth/2, $iHWidth, $iHWidth, 0, 180 ) ; _GDIPlus_PathAddArc or _GDIPlus_PathAddPie
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddArc ( $hPath, $iHWidth*( 1+3*$i )/2, $iGuiHeight -$iHWidth/2, $iHWidth, $iHWidth, 180, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next
    For $i = 0 To $iVCount -1 ; Left & right
        _GDIPlus_PathAddArc ( $hPath, -$iVWidth/2, $iVWidth*( 1+3*$i )/2, $iVWidth, $iVWidth, 270, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddArc ( $hPath, $iGuiWidth -$iVWidth/2, $iVWidth*( 1+3*$i )/2, $iVWidth, $iVWidth, 90, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next

    Local Const $hIA = _GDIPlus_ImageAttributesCreate()
    Local $aRemapTable[2][2]
    $aRemapTable[0][0] = 1
    $aRemapTable[1][0] = 0xFFABCDEF
    $aRemapTable[1][1] = 0x00000000
    _GDIPlus_ImageAttributesSetRemapTable($hIA, 1, True, $aRemapTable)

    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hBmp, 0, 0, $iGuiWidth, $iGuiHeight, 0, 0, $iGuiWidth, $iGuiHeight, $hIA )
    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth, $iVWidth, $iImageWidth, $iImageHeight )
    _GDIPlus_PathDispose ( $hPath )
    _GDIPlus_BrushDispose ( $hBrush )
    _GDIPlus_ImageAttributesDispose( $hIA )
    _GDIPlus_GraphicsDispose( $hCtxt  )
    _GDIPlus_BitmapDispose( $hBmp )
EndFunc ;==> _PostStampCreateRoundSerration()

Func _PostStampCreateTriangleSerration ( $hImage )
    Local Const $hBmp = _GDIPlus_BitmapCreateFromScan0( $iGuiWidth, $iGuiHeight )
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext( $hBmp )
;~  _GDIPlus_GraphicsClear( $hCtxt, $SerratedEdgeColor )
    _GDIPlus_GraphicsFillRect( $hCtxt, 0, 0, $iGuiWidth, $iGuiHeight, $hTexture_Paper )
    Local $hBrush = _GDIPlus_BrushCreateSolid ( 0xFFABCDEF )
    Local $hPath = _GDIPlus_PathCreate()
    Local $aPoints[5][2]
    $aPoints[0][0] = 4
    For $i = 0 To $iHCount +1 ; top & bottom
        $aPoints[1][0] = $iHWidth*$i
        $aPoints[1][1] = -$iHWidth/2
        $aPoints[2][0] = $iHWidth*$i -$iHWidth/2
        $aPoints[2][1] = 0
        $aPoints[3][0] = $iHWidth*$i
        $aPoints[3][1] = $iHWidth/2
        $aPoints[4][0] = $iHWidth*$i +$iHWidth/2
        $aPoints[4][1] = 0
        _GDIPlus_PathAddPolygon ( $hPath, $aPoints )
        _GDIPlus_PathCloseFigure ( $hPath )
        $aPoints[1][1] += $iGuiHeight
        $aPoints[2][1] += $iGuiHeight
        $aPoints[3][1] += $iGuiHeight
        $aPoints[4][1] += $iGuiHeight
        _GDIPlus_PathAddPolygon ( $hPath, $aPoints )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next
    For $i = 0 To $iVCount +1 ; Left & right
        $aPoints[1][0] = 0
        $aPoints[1][1] = $iVWidth*$i -$iVWidth/2
        $aPoints[2][0] = -$iVWidth/2
        $aPoints[2][1] = $iVWidth*$i
        $aPoints[3][0] = 0
        $aPoints[3][1] = $iVWidth*$i +$iVWidth/2
        $aPoints[4][0] = $iVWidth/2
        $aPoints[4][1] = $iVWidth*$i
        _GDIPlus_PathAddPolygon ( $hPath, $aPoints )
        _GDIPlus_PathCloseFigure ( $hPath )
        $aPoints[1][0] += $iGuiWidth
        $aPoints[2][0] += $iGuiWidth
        $aPoints[3][0] += $iGuiWidth
        $aPoints[4][0] += $iGuiWidth
        _GDIPlus_PathAddPolygon ( $hPath, $aPoints )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next

    Local Const $hIA = _GDIPlus_ImageAttributesCreate()
    Local $aRemapTable[2][2]
    $aRemapTable[0][0] = 1
    $aRemapTable[1][0] = 0xFFABCDEF
    $aRemapTable[1][1] = 0x00000000
    _GDIPlus_ImageAttributesSetRemapTable($hIA, 1, True, $aRemapTable)

    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hBmp, 0, 0, $iGuiWidth, $iGuiHeight, 0, 0, $iGuiWidth, $iGuiHeight, $hIA )
    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth, $iVWidth, $iImageWidth, $iImageHeight )
    _GDIPlus_PathDispose ( $hPath )
    _GDIPlus_BrushDispose ( $hBrush )
    _GDIPlus_ImageAttributesDispose( $hIA )
    _GDIPlus_GraphicsDispose( $hCtxt  )
    _GDIPlus_BitmapDispose( $hBmp )
EndFunc ;==> _PostStampCreateTriangleSerration()

Func _GDIPlus_ImageAttributesSetRemapTable($hImageAttributes, $iColorAdjustType = 0, $fEnable = False, $aColorMap = 0)
    Local $iI, $iCount, $tColorMap, $aResult
    If IsArray($aColorMap) And UBound($aColorMap) > 1 And UBound($aColorMap, 2) Then
        $iCount = $aColorMap[0][0]
        $tColorMap = DllStructCreate("uint ColorMap[" & $iCount * 2 & "]")
        For $iI = 1 To $iCount
            $tColorMap.ColorMap((2 * $iI - 1)) = $aColorMap[$iI][0]
            $tColorMap.ColorMap((2 * $iI)) = $aColorMap[$iI][1]
        Next
        $aResult = DllCall($__g_hGDIPDll, "int", "GdipSetImageAttributesRemapTable", "handle", $hImageAttributes, "int", $iColorAdjustType, "int", $fEnable, "int", $iCount, "struct*", $tColorMap)
        If @error Then Return SetError(@error, @extended, False)
        If $aResult[0] Then Return SetError(10, $aResult[0], False)
        Return True
    EndIf
    Return SetError(11, 0, False)
EndFunc   ;==>_GDIPlus_ImageAttributesSetRemapTable

Func _ScriptIsAlreadyRunning()
    Local $aWinList = WinList ( AutoItWinGetTitle() )
    If Not @error Then Return UBound ( $aWinList ) -1 > 1
EndFunc ;==> _ScriptIsAlreadyRunning()

Func _WM_HSCROLL ( $hWnd, $iMsg, $wParam, $lParam )
    #forceref $hWnd, $iMsg, $wParam
    Switch $lParam
        Case GUICtrlGetHandle ( $idSliderRescale )
            $iScale = GUICtrlRead ( $idSliderRescale )/100
            ControlSetText ( $hGuiMain, '', $idLabelScale,  StringFormat ( '%03.2f', $iScale ) )
            If $hImage Then ControlSetText ( $hGuiMain, '', $idLabelOutputSize,  Int ( $iGuiWidth * $iScale ) & 'x' & Int ( $iGuiHeight * $iScale ) )
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc ;==> _WM_HSCROLL()

Func _WM_PAINT ( $hWnd, $iMsg, $wParam, $lParam )
    #forceref $hWnd, $iMsg, $wParam, $lParam
    Switch $hWnd
        Case $hGuiMain
            _ImageDraw()
            If $hClonePreview Then _GDIPlus_GraphicsDrawImageRectRect ( $hGraphicPreview, $hClonePreview, 0, 0, $iGuiWidth, $iGuiHeight, $x, $y, $w, $h )
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc ;==> _WM_PAINT()

Func Choosecolorgif ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = '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'
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> Choosecolorgif()

Func Exitgif ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = 'R0lGODlhyAAYAPYAAEREREVFRUdHR0pKSk5OTVVUU1xbWWNiXmtpZXJwanl2cH17c4SAd4aCd4aCeIeDeYeEeoeFfYiGgYeGgoeGg4eGhIiHhIuKhZCOh5aSipmVjJmWjJqWi5uXjJyYjZ+bkaGdkqOflKSglaWhlqekm6uonq+roLCtpLOwp7azqre0rLm1qrq2q7+8scG+tcO/tMbCt8rGvMzIvs3Jvs3Jv8/LwtHNxNLPxtPQx9bSyNbTyNfTyNzYzd/c0+Dd0+Hd0+Lf1ufk2uvn3Ovn3ezo3+7q4vHu5vPv5/Tx5/Tx5vXx5/by6ff06vj16/r27Pv47f768P778f778v789f789v79+P/+/P/++wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH+GiJDcmVhdGVkIHdpdGggQ2hpbXBseS5jb20iACH5BAkAAFgALAAAAADIABgAAAf/gACCAQYKEA+IiYqLjI2Oj5CRkpOUlZaXmJUQCwYCgp8DCx89TFamp6ipqqusra6vsLGys7S1trNOPSEMA6ARMlW3wsPExcbHyK82Eb0BCzFXydLTtRbW1NjSNgwCBh9V0dnirxXl5uazFZ+n6OPusFcgBgs8VeBX+Pn6+/z9/v8AAwJU96kgAIH4CAKwkvATwocQI0rkV6XHAghM7E3cyJGjQoMLH65rKIhhx5MoEVZpcoiKS3swY8qcSbOmzZs4cypclaJcC5gsyqGwV86FKXOfXFTIybSp06c2XSKaQhWq1atYYVJwOPPJAUEYqhyx8BUAhSpbBaEFqTar27c4/6lOpUq3rt27ePPq3cu3L9UJSScIrsuDAAABRVowCACgAJIqgAVdmcL2oN/LmDNrrotIiufPoEOLHk26tOnTqD1LqAyaBFgMZWlUkbJarWcXn2Km3s27t2/QiKIIH068uPHjyJMrX85ceITKVYZDSXA4g6ewU6I8V+s8d/Pv4MOLPx58vPnz6LXnlikdRAEAhg0wya6ee30A0dPr388cUZL/AAYo4IAEFmjggQgm+B8DnzxRIAsMvNdLAUYosWCDFwrioIIcdujhhwMiIsSIJJZo4okopqjiiiy2OOICnyyB4g2cHFYCYwwM8WKMIzIoiIwuBinkkESeiMgPSCap5P+STDbp5JNQRiklkgp8ooICWCqAJA8OICAIA0SUpQKVnxiBZAeeAECCllO26eabcC6JyA501mnnnXjmqeeefPbpJ53UVbaDBgn0IsANQGzgSQE47BAoAETQSYMBBv1p6aWYZnonIjDM4OmnoIYq6qiklmrqqah6WhkAQcxQJQALBGHDDNstUMMMn7TqaQsK9CKIrqkGK+ywxM4QwwMKnPDCssw26+yz0EYr7bTUVsusD9hmm+2yOWCrA7M3eLvstszCoEMP5Fqr7rrstvvCCQoYcMEK9NZr77345qvvvvz26++/AAcs8MAEF4wvBgY444EJDDfs8MMQRyzxxBRXbPFnxRhnrPHGHHfs8AcLeDIAAxmIMMLJKKes8sost+zyyzDHLPPMNNds8804j6ABL6BclAEHHQQt9NBEF2300UgnrfTSTDft9NNQR+00Bxls4usnhCjQQCZcd+3112CHLTYjDcSbJgCBAAA7'
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> Exitgif()

Func Opengif ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = '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'
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> Opengif()

Func Saveaspnggif ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = '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'
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> Saveaspnggif()

Func Stamp2Ico ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = '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'
    $sFileBin &= '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'
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    $sFileBin = Binary ( _LzntDecompress ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> Stamp2Ico()

Func _Fluidwatercolorpaperjpg ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= 'WXR29sn0ZwN269wPupc6QcfhrgXxk99ajXoa/HywJfYza6V36BHrgH5pB7PHudu3g6/DpgdOBYZ9w9HA5921e0QrUtoW3j4YF1YNU23jWcBCjEOr1wFq/wAY328cAO5qnWvQJ1wCfa2a8PF1MCTujpGlv5HXAbVIkouvu6OBvbYTt243OsanlDgNee3cZT5OBc234k/68MDja9zpKMasT9MBraxvYDzZ1+EYCKQ1oPL+R0MDHd5PFGj05dcCioe4EXcNvlgR9rJVld66x64FXq2DX3H8ZnAie86H/XZ6uomBuPLpSz4OA1Pxv/1lV3QwFvdEKWfCdD13nAituft7s1uHQQPjgWzWoV92mk23+OBNe1eHdTq6T5SYFHPw98bDofGMBe2KTOmx/tgaLVZGaxt/owI9h7xsPXfp44FVu39+unQNPngPPt2eL7h1lMAaj/8AVYPHVcC/fV2q16774EIXdQtG5rrgRzK6U7TQN3Yn4YFA2htc42/jEnzwB7VR0oX7fUlPppgdC1ahBtpxh/vgCnc+yJr0dEwIe13m2nc41jWnEdPXAm/btXjHG9jZtWU+AYFF7ByuVI3QQ+WBXOf/AK7Vqb6GxgJKMWHo+WBNNNB/JYieW/zwLYXd10wK91Y1k+vlgQsTNUr/AJP9MAh3taupEGi4BxKxK1HrOv8AtgFbcda2bD0IK/DABr3NJ7lTedA+pgXHbRpVsJq+LgT2ztk+2zXq21r9dcDW7x20Ht2vWzox+2AlO3b3Q+kw4AVpW3OpxXWcCyq6zyHbAG3domknhOBN/wAncNmtZ2I+uBq8R5RxubyQfPASvL3XOWujV28ycD//2Q=='
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> _Fluidwatercolorpaperjpg()

Further I added a paper texture.

The "Serrated Edge Color" for this version is obsolete but you can add an option...

Edited by 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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
TheSaint

Seems like a nifty program to have in the kitbag, though I don't know what I'd use it for at this stage, as I'm guessing the Post Office won't accept my creations as kosher.

Do we call you Postmaster General now?

Thanks for sharing! :D


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
wakillon

The save process takes too long.

I modified your script a little bit:

Further I added a paper texture.

The "Serrated Edge Color" for this version is obsolete but you can add an option...

Hum...usually you offer solutions that improve script, in this case it destroy the serrated edges and transparency is loosed:huh2:

The interest of this kind of "stamp image" is to be easily pasted on anything...

The save process takes too long for high dimensions because the transparency need to be fixed by another way than classic GDI functions.

So i prefer loose a bit of time and get a quality stamp ! ;)

Thanks.

Edit : may be i could add a progress bar using a timer...

Edited by wakillon

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
wakillon

Seems like a nifty program to have in the kitbag, though I don't know what I'd use it for at this stage, as I'm guessing the Post Office won't accept my creations as kosher.

Do we call you Postmaster General now?

Thanks for sharing! :D

Why not ? 

Do you think i should add the cancellation postmark for scammers ? :D

Thanks.


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
TheSaint

Could be cool to have that as an option.

Maybe even add an ink stamp facility which includes place names.


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
Lakes

I just goggled this

http://www.royalmail.com/personal/stamps-and-collecting/smilers

so, I guess (for the Uk anyway) as long as you stick a "proper" 1st or 2nd class stamp on the envelope/parcel you can add your own sticker.

Edited by Lakes

2015 - Still no flying cars, instead blankets with sleeves.

Share this post


Link to post
Share on other sites
TheSaint

Like "BOMBAY" on this stamp (only better .... more defined).

depositphotos_31122159-Postage-stamp-Ind

Edited by TheSaint

AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
wakillon

Could be cool to have that as an option.

Maybe even add an ink stamp facility which includes place names.

It's an idea, why not...


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
wakillon

I just goggled this

http://www.royalmail.com/personal/stamps-and-collecting/smilers

so, I guess (for the Uk anyway) as long as you stick a "proper" 1st or 2sd class class stamp on the envelope/parcel you can add your own sticker.

Or as pictureitpostage.com

The problem is that is not free !

Edited by wakillon

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
UEZ

Hum...usually you offer solutions that improve script, in this case it destroy the serrated edges and transparency is loosed:huh2:

The interest of this kind of "stamp image" is to be easily pasted on anything...

The save process takes too long for high dimensions because the transparency need to be fixed by another way than classic GDI functions.

So i prefer loose a bit of time and get a quality stamp ! ;)

Thanks.

Edit : may be i could add a progress bar using a timer...

For me the transparency is working properly. You are replacing the color with transarent color using regex which takes "a long time" for bigger images. I added a way which takes some milliseconds using 

_GDIPlus_ImageAttributesSetRemapTable()

Example:

Func _PostStampCreateRoundSerration ( $hImage )
    Local Const $hBmp = _GDIPlus_BitmapCreateFromScan0( $iGuiWidth, $iGuiHeight )
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext( $hBmp )
;~  _GDIPlus_GraphicsClear( $hCtxt, $SerratedEdgeColor )
    _GDIPlus_GraphicsFillRect( $hCtxt, 0, 0, $iGuiWidth, $iGuiHeight, $hTexture_Paper )
    Local $hBrush = _GDIPlus_BrushCreateSolid ( 0xFFABCDEF )
    Local $hPath = _GDIPlus_PathCreate()
    For $i = 0 To $iHCount -1 ; top & bottom
        _GDIPlus_PathAddArc ( $hPath, $iHWidth*( 1+3*$i )/2, -$iHWidth/2, $iHWidth, $iHWidth, 0, 180 ) ; _GDIPlus_PathAddArc or _GDIPlus_PathAddPie
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddArc ( $hPath, $iHWidth*( 1+3*$i )/2, $iGuiHeight -$iHWidth/2, $iHWidth, $iHWidth, 180, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next
    For $i = 0 To $iVCount -1 ; Left & right
        _GDIPlus_PathAddArc ( $hPath, -$iVWidth/2, $iVWidth*( 1+3*$i )/2, $iVWidth, $iVWidth, 270, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddArc ( $hPath, $iGuiWidth -$iVWidth/2, $iVWidth*( 1+3*$i )/2, $iVWidth, $iVWidth, 90, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next

    Local Const $hIA = _GDIPlus_ImageAttributesCreate()
    Local $aRemapTable[2][2]
    $aRemapTable[0][0] = 1
    $aRemapTable[1][0] = 0xFFABCDEF
    $aRemapTable[1][1] = 0x00000000
    _GDIPlus_ImageAttributesSetRemapTable($hIA, 1, True, $aRemapTable)

    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hBmp, 0, 0, $iGuiWidth, $iGuiHeight, 0, 0, $iGuiWidth, $iGuiHeight, $hIA )
    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth, $iVWidth, $iImageWidth, $iImageHeight )
    _GDIPlus_PathDispose ( $hPath )
    _GDIPlus_BrushDispose ( $hBrush )
    _GDIPlus_ImageAttributesDispose( $hIA )
    _GDIPlus_GraphicsDispose( $hCtxt  )
    _GDIPlus_BitmapDispose( $hBmp )
EndFunc ;==> _PostStampCreateRoundSerration()

And as I said you can add an option to switch  to color instead of texture background mode which should give a paper look rather than a flat white.

If you comment out 

_GDIPlus_GraphicsFillRect( $hCtxt, 0, 0, $iGuiWidth, $iGuiHeight, $hTexture_Paper )

and enable

_GDIPlus_GraphicsClear( $hCtxt, $SerratedEdgeColor )

the  serrated edges color again.

 

Here the result of an image which has transparency:

261d946.png

  • Like 1

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
wakillon

Well, i do not understand what i have doing wrong this morning with your script but it returned horrible edges.

I'm now on my own PC, and after having done some new tests, I must apologize to you ! :>

You are right, the_GDIPlus_ImageAttributesSetRemapTable function is more fast.

It would have been easier if the _GDIPlus_ImageSaveToFileEx function could preserve the transparency, no ? :)

 


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
wakillon

UEZ

I have retried your first solution on the PC i have used yesterday morning.

With your first solution and the last one you sent me yesterday evening, transparency became white !

And the worst, is that my own version too !

Compiled or not, i get a full white frame instead of serrated edges ! 

This PC is under Win7X86 with AutoIt 3.3.12.0

So i'm completly lost ! :blink:

 

Edit : To other members, is there some Win7 users who can confirm this result ?

Edited by wakillon

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
UEZ

It works properly in my Win7 x64 test vm.


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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
wakillon

It works properly in my Win7 x64 test vm.

So, the reason is it was under X86 ?


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
UEZ

Maybe the color depth of the graphic card is set to 24-bit only?


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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
wakillon

Maybe the color depth of the graphic card is set to 24-bit only?

Does it mean that i can not have any transparency under this kind of PC ?

I have also tried my compiled version with my old netbook under XPSP3 x86 and it works !

Strange isnt'it ?


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
UEZ

What is the result on this PC when you run this script?

Global $objWMI= ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & @ComputerName & "\root\cimv2")
Global $oItems = $objWMI.InstancesOf("Win32_DisplayConfiguration")
Global $oTokens

For $oTokens In $oItems
    MsgBox(0, "Test", "Gfx Device: " & $oTokens.DeviceName & @CRLF & _
                      "Screen Color Depth: " & $oTokens.BitsPerPel  & " bit")
Next

 


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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • Melque_Lima
      By Melque_Lima
      A little help here please !?
      I'm trying to parse a file but the function is not working well! i think there is some thind doing wrong at FileRead()
      Obs: username,password and API link below is fictitious
      ConsoleWrite(">POST METHOD UPLOADING LOCAL IMAGE<" & @CRLF) _PostMethodTest() Func _PostMethodTest() Local Const $sAPIKey = '8f1e0a750088957' Local $sBoundary = "--------Boundary" Local $sHeaders = "Content-Type: multipart/form-data; boundary=" & $sBoundary & @CRLF Local $sData = '' Local $sFileName="image.jpg" Local $sFilePath="C:\Users\DELL\Desktop\" & $sFileName Local $hFile=FileOpen($sFilePath,16);16=$FO_BINARY Local $sFileData=FileRead($hFile) FileClose($hFile) $sData &= "--" & $sBoundary & @CRLF $sData &= 'Content-Disposition: form-data; name="myImage"; filename="' & $sFileName & '"' & @CRLF $sData &= 'Content-Type: application/upload' & @CRLF & @CRLF $sData &= BinaryToString($sFileData,0) & @CRLF $sData &= "--" & $sBoundary & @CRLF $sData &= 'Content-Disposition: form-data; name="username"' & @CRLF & @CRLF $sData &="myuserName" & @CRLF $sData &= "--" & $sBoundary & @CRLF $sData &= 'Content-Disposition: form-data; name="password"' & @CRLF & @CRLF $sData &="MyPassword" & @CRLF $sData &=$sBoundary & "--" ConsoleWrite($sData) Local $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") $oHTTP.Open("POST", "http://myapi", False) $oHTTP.SetRequestHeader("Content-Type", "multipart/form-data; " & "boundary=" & $sBoundary) $oHTTP.SetRequestHeader("apikey", $sAPIKey) $oHTTP.Send(StringToBinary($sData,1)) Local $sReceived = $oHTTP.ResponseText ConsoleWrite($sReceived & @CRLF) EndFunc ;==>_PostMethodTest  

    • UEZ
      By UEZ
      Here another example to mark the desktop to get the marked region for capturing. This example is not perfect and not very fast (room for improvements).
      ;coded by UEZ build 2018-11-30 beta ;code cleanup up mLipok #include <APISysConstants.au3> #include <Array.au3> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WinAPIGdi.au3> #include <WinAPISysWin.au3> #include <WindowsConstants.au3> Global $__g_hGUI_MarkArea, $__g_hGUI_Bg, $__g_iLabel_TL, $__g_iLabel_TM, $__g_iLabel_TR, $__g_iLabel_LM, $__g_iLabel_RM, $__g_iLabel_BL, $__g_iLabel_BM, _ $__g_iLabel_BR, $__g_iOldCursor, $__g_iW, $__g_iH, $__g_iColor_ResizeDots = 0xFFFFFF, $__g_iBorder = 4, $__g_bSelectionDone = False Global $aRect = _GDIPlus_MarkScreenRegionAnimated() _ArrayDisplay($aRect, "Marked area coordinates") Func _GDIPlus_MarkScreenRegionAnimated($bAnim = True) _GDIPlus_Startup() Local Const $hFullScreen = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]") Local Const $aFullScreen = WinGetPos($hFullScreen) $__g_hGUI_Bg = GUICreate("", $aFullScreen[2], $aFullScreen[3], $aFullScreen[0], $aFullScreen[1], BitOR($WS_CLIPCHILDREN, $WS_POPUP), $WS_EX_TOPMOST) ;to avoid cursor flickering and for proper control read WinSetTrans($__g_hGUI_Bg, "", 0x01) $__g_hGUI_MarkArea = GUICreate("", 1, 1, -1, -1, $bAnim ? $WS_POPUP : BitOR($WS_POPUP, $WS_BORDER), BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED), $__g_hGUI_Bg) GUISetBkColor(0xABCDEF, $__g_hGUI_MarkArea) If Not $bAnim Then $__g_iColor_ResizeDots = 0xFF0000 $__g_iLabel_TL = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;top left GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_TM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;top mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_TR = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;top right GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_LM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;left mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_RM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;right mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_BL = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;bottom left GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_BM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;bottom mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_BR = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;bottom right GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) GUISetState(@SW_SHOWNA, $__g_hGUI_Bg) GUISetState(@SW_SHOW, $__g_hGUI_MarkArea) $__g_iOldCursor = MouseGetCursor() GUISetCursor(3, 1, $__g_hGUI_Bg) GUISetCursor(3, 1, $__g_hGUI_MarkArea) _WinAPI_SetLayeredWindowAttributes($__g_hGUI_MarkArea, 0xABCDEF, 0xF0) Local $aMPos, $aPrevMPos[2] = [MouseGetPos(0) + 1, MouseGetPos(1) + 1], $iID, $aCI, $iX, $iY, $aOldWinPos, $aOldMPos, $bMoved Local $aGUIStartPos, $iKey_Exit = GUICtrlCreateButton("", $aFullScreen[0] - 10, $aFullScreen[1] - 10, 1, 1), $aAccelKeys[1][2] = [["{ENTER}", $iKey_Exit]] GUISetAccelerators($aAccelKeys, $__g_hGUI_Bg) GUISetAccelerators($aAccelKeys, $__g_hGUI_MarkArea) #forceref $bMoved Do Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $iKey_Exit If $bAnim Then GUIRegisterMsg($WM_TIMER, "") DllCall("user32.dll", "bool", "KillTimer", "hwnd", $__g_hGUI_MarkArea, "uint_ptr", $iID) GUIRegisterMsg($WM_ERASEBKGND, "") EndIf _GDIPlus_Shutdown() Local $aResult = WinGetPos($__g_hGUI_MarkArea) $aResult[2] = WinGetClientSize($__g_hGUI_MarkArea)[0] $aResult[3] = WinGetClientSize($__g_hGUI_MarkArea)[1] GUIDelete($__g_hGUI_MarkArea) GUIDelete($__g_hGUI_Bg) If Not $__g_bSelectionDone Then $aResult = 0 Return $aResult EndSwitch $aMPos = MouseGetPos() If ($aMPos[0] <> $aPrevMPos[0] Or $aMPos[1] <> $aPrevMPos[1]) And (Not $__g_bSelectionDone) Then WinMove($__g_hGUI_MarkArea, "", $aMPos[0], $aMPos[1]) $aPrevMPos = $aMPos EndIf $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) If $aCI[2] And (Not $__g_bSelectionDone) Then $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) If $bAnim Then GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND") GUIRegisterMsg($WM_TIMER, "PlayBorderAnim") $iID = DllCall("User32.dll", "uint_ptr", "SetTimer", "hwnd", $__g_hGUI_MarkArea, "uint_ptr", 1, "uint", 50, "ptr", 0)[0] EndIf While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) $aMPos = MouseGetPos() $__g_iW = Abs($aMPos[0] - $aGUIStartPos[0]) + 1 $__g_iH = Abs($aMPos[1] - $aGUIStartPos[1]) + 1 If $aMPos[0] < $aGUIStartPos[0] Then $iX = $aMPos[0] Else $iX = $aGUIStartPos[0] EndIf If $aMPos[1] < $aGUIStartPos[1] Then $iY = $aMPos[1] Else $iY = $aGUIStartPos[1] EndIf WinMove($__g_hGUI_MarkArea, "", $iX, $iY, $__g_iW, $__g_iH) UpdateCtrlPos($bAnim) WEnd $__g_bSelectionDone = True GUISetCursor(3, 1, $__g_hGUI_MarkArea) ElseIf $aCI[3] And $__g_bSelectionDone Then $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) If _WinAPI_PtInRectEx(MouseGetPos(0), MouseGetPos(1), $aGUIStartPos[0], $aGUIStartPos[1], $aGUIStartPos[0] + $aGUIStartPos[2], $aGUIStartPos[1] + $aGUIStartPos[3]) Then $aMPos = MouseGetPos() $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) While $aCI[3] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aGUIStartPos[0] - ($aMPos[0] - MouseGetPos(0)), $aGUIStartPos[1] - ($aMPos[1] - MouseGetPos(1)), $__g_iW, $__g_iH) GUISetCursor(0, 1, $__g_hGUI_Bg) GUISetCursor(0, 1, $__g_hGUI_MarkArea) WEnd GUISetCursor(3, 1, $__g_hGUI_Bg) GUISetCursor(3, 1, $__g_hGUI_MarkArea) EndIf EndIf If $__g_bSelectionDone Then $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) If @error Then ContinueLoop Switch $aCI[4] Case $__g_iLabel_TL GUISetCursor(12, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", MouseGetPos(0), MouseGetPos(1), $aOldWinPos[2] + ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] + ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_BR GUISetCursor(12, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], $aOldWinPos[1], $aOldWinPos[2] - ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] - ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_TR GUISetCursor(10, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], MouseGetPos(1), $aOldWinPos[2] - ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] + ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_BL GUISetCursor(10, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", MouseGetPos(0), $aOldWinPos[1], $aOldWinPos[2] + ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] - ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_LM GUISetCursor(13, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", MouseGetPos(0), $aOldWinPos[1], $aOldWinPos[2] + ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3]) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_RM GUISetCursor(13, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], $aOldWinPos[1], $aOldWinPos[2] - ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3]) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_TM GUISetCursor(11, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], MouseGetPos(1), $aOldWinPos[2], $aOldWinPos[3] + ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_BM GUISetCursor(11, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], $aOldWinPos[1], $aOldWinPos[2], $aOldWinPos[3] - ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case Else GUISetCursor(3, 1, $__g_hGUI_MarkArea) EndSwitch EndIf Until False EndFunc ;==>_GDIPlus_MarkScreenRegionAnimated Func UpdateCtrlPos($bAnim = True) Local Const $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) If $__g_bSelectionDone And $bAnim Then GUIRegisterMsg($WM_TIMER, "") $__g_iW = $aGUIStartPos[2] $__g_iH = $aGUIStartPos[3] ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_TL, 0, 0, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_TM, ($__g_iW - $__g_iBorder) / 2, 0, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_TR, ($__g_iW - $__g_iBorder - $__g_iBorder / 2), 0, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_LM, 0, ($__g_iH - $__g_iBorder) / 2, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_RM, ($__g_iW - $__g_iBorder - $__g_iBorder / 2), ($__g_iH - $__g_iBorder) / 2, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_BL, 0, ($__g_iH - $__g_iBorder - $__g_iBorder / 2), $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_BM, ($__g_iW - $__g_iBorder) / 2, ($__g_iH - $__g_iBorder - $__g_iBorder / 2), $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_BR, ($__g_iW - $__g_iBorder - $__g_iBorder / 2), ($__g_iH - $__g_iBorder - $__g_iBorder / 2), $__g_iBorder, $__g_iBorder) If $__g_bSelectionDone And $bAnim Then GUIRegisterMsg($WM_TIMER, "PlayBorderAnim") EndFunc ;==>UpdateCtrlPos Func PlayBorderAnim() Local $aWinPos = WinGetClientSize($__g_hGUI_MarkArea), $iW = $aWinPos[0], $iH = $aWinPos[1] Local Static $fOffset = 0 Local Const $iSize = $__g_iBorder / 2 Local Const $hDC = _WinAPI_GetDC($__g_hGUI_MarkArea) Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH) Local Const $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap) Local Const $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) Local Const $hPen = _GDIPlus_PenCreate(0xFF0178D7, $iSize), $hPen2 = _GDIPlus_PenCreate(0xFFFFFFFF, $iSize), _ $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000 + $__g_iColor_ResizeDots), $hPen3 = _GDIPlus_PenCreate(0xFF000000) _GDIPlus_PenSetDashStyle($hPen, $GDIP_DASHSTYLEDASHDOT) _GDIPlus_GraphicsClear($hCanvas, 0xFFABCDEF) ;for faster performance direct dll calls DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen2, "float", 1 + $iSize, "float", 1 + $iSize, "float", $iW - 2 * $iSize - 2, "float", $iH - 2 * $iSize - 2) DllCall($__g_hGDIPDll, "int", "GdipSetPenDashOffset", "handle", $hPen, "float", $fOffset) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen, "float", 1 + $iSize, "float", 1 + $iSize, "float", $iW - 2 * $iSize - 2, "float", $iH - 2 * $iSize - 2) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", 0, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", 0, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) / 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) / 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) - 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) - 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", 0, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", 0, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", 0, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", 0, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) / 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) / 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) _WinAPI_BitBlt($hDC, 0, 0, $iW, $iH, $hDC_backbuffer, 0, 0, $SRCCOPY) $fOffset += 0.5 _GDIPlus_GraphicsDispose($hCanvas) _WinAPI_SelectObject($hDC_backbuffer, $DC_obj) _WinAPI_DeleteDC($hDC_backbuffer) _WinAPI_DeleteObject($hHBitmap) _WinAPI_ReleaseDC($__g_hGUI_MarkArea, $hDC) _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($hPen2) _GDIPlus_PenDispose($hPen3) _GDIPlus_BrushDispose($hBrush) EndFunc ;==>PlayBorderAnim Func WM_ERASEBKGND($hWnd, $iMsgm, $wParam, $lParam) ;suppress repainting to avoid flickering but causes some other side effects #forceref $iMsgm, $wParam, $lParam, $hWnd Local Const $hBrush = _WinAPI_CreateSolidBrush(0xEFCDAB) ;BGR format ;~ _WinAPI_RedrawWindow($__g_hGUI_MarkArea, 0, 0, BitOR($RDW_NOERASE, $RDW_NOCHILDREN, $RDW_NOFRAME, $RDW_VALIDATE)) _WinAPI_SetClassLongEx($__g_hGUI_MarkArea, $GCL_HBRBACKGROUND, $hBrush) _WinAPI_DeleteObject($hBrush) Return 0 EndFunc ;==>WM_ERASEBKGND  
      Just press the lmb and move your mouse. When lmb is released you can adjust the size of the window by dragging the white rectangle to any direction. Rmb will move the marked area.
      Press ESC to get the coordinates of the marked region.
      If you have any improvements, please post it here.
       
      Tested on Win10 x64 only.
       
    • badcoder123
      By badcoder123
      I was looking around the help file and I came across _GDIPlus_GraphicsDrawRect and _WinAPI_DrawLine and I seem to be having the same "problem" where every time it draws into a window and you lose or gain focus it has to redraw itself. Is there anyway around this? 
      #include <WindowsConstants.au3> #include <WinAPI.au3> #Include <GDIPlus.au3> _GDIPlus_Startup() Run("notepad.exe") $hWnd = WinWait("Untitled") $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd) $Color = 0xFFFF0000 $hPen = _GDIPlus_PenCreate($Color, 2) For $i = 1 To 10 _GDIPlus_GraphicsDrawRect($hGraphic, 200, 200, 25 ,25, $hPen) ToolTip($i) Sleep(1000) Next _WinAPI_RedrawWindow($hWnd, 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_PenDispose($hPen) _GDIPlus_Shutdown()  
    • bhns
      By bhns
      try it for make flyers old games xml + Gdi, i belive many sources had lost 
      AIT-ADRLIST.au3

    • mdepot
      By mdepot
      I have a situation where I am repeatedly capturing a region of the screen and feeding it into Tesseract OCR.  Since the OCR is a relatively slow operation, I would like to create an in memory cache of the ocr results.  An ideal hash key for this cache would be a checksum of the captured image.  With this I could capture the region, checksum it, and then only if I don't get a cache hit I would write the image out to disk for external OCR.
      Now I know I can do this by saving the captured image out to disk, and then summing the disk file with _Crypt_HashFile().  But that's still slower than I would like, and it shouldn't be necessary.  Ideally, it should be possible to checksum the image data directly in memory so I don't have to go to disk at all.  In order to do that, I need a way to dump a representation of the image into a string  (or some equivalent).  Then I could use the _Crypt_HashData() function against that string to create my cache hash key.
      Googling around I found an article here that shows a way to convert an image object to a byte array using System.Drawing.  This was the closest thing I found to what I'm trying to do.  I don't know if that method could be used from within AutoIT, or if perhaps there may be a better way I don't know about.  If someone could give me a shove in the right direction it would be a big help.  Thanks!
×