Jump to content
Sign in to follow this  
Mikeman27294

Changing image hue

Recommended Posts

Mikeman27294

Hey everyone.

I want to add a theming engine to a program of mine, so that there is multiple hues, ie red, green, orange, blue and so on. I also want to be able to change the brightness of the background, ie you can choose between a range oflight greys through to dark greys.

I have searched the forum and came across this:

#include<Array.au3>

#include<Color.au3>

#include<GUIConstantsEx.au3>

GUICreate("",360,350)
$gra = GUICtrlCreateGraphic(0,0,360,20)
GUISetState()
$Color = 0xFFff00
GUISetBkColor($Color)
ConsoleWrite("Color: 0x" & Hex($Color, 6) & @CRLF)
ConsoleWrite("Saturation: " & _Color_GetSaturation($Color) & " %" & @CRLF)
ConsoleWrite("Brightness: " & _Color_GetBrightness($Color) & " %" & @CRLF)
ConsoleWrite("Hue: " & _Color_GetHue($Color) & " º" & @CRLF)
Sleep(1000)
ConsoleWrite("Complementary color: " & _Color_FindComplementary($Color) & @CRLF & @CRLF)
$i = 0
While $i < 2
    $i += 1
    GUISetBkColor(_Color_FindComplementary($Color))
    Sleep(500)
    GUISetBkColor($Color)
    Sleep(500)
WEnd
GUISetBkColor(0)
For $x = 0 To 360 Step 2
    $hue = _Color_SetHue($Color, $x)
    ConsoleWrite("Hue: " & $x & " º" & $hue & @CRLF)
;~  GUISetBkColor($hue)
    GUICtrlSetGraphic($gra,$GUI_GR_COLOR,$hue,$hue)
    GUICtrlSetGraphic($gra,$GUI_GR_RECT,$x,0,2,20)
    GUICtrlSetGraphic($gra,$GUI_GR_REFRESH)
    Sleep(30)
 
Next
Sleep(500)
GUISetBkColor($Color)
GUICtrlDelete($gra)
$gra = GUICtrlCreateGraphic(0,0,350,20)
$gra2 = GUICtrlCreateGraphic(0,20,350,20)
 
 
ConsoleWrite("  Saturation:  Brightness:" & @CRLF)
For $x = 0 To 100
    $sat = _Color_SetSaturation($Color, $x)
    $brigth = _Color_SetBrightness($Color, $x)
    ConsoleWrite($x & " % " & $sat & "   " & $brigth & @CRLF)
    GUICtrlSetGraphic($gra,$GUI_GR_COLOR,$sat,$sat)
    GUICtrlSetGraphic($gra2,$GUI_GR_COLOR,$brigth,$brigth)
    GUICtrlSetGraphic($gra,$GUI_GR_RECT,350*$x/100,0,Ceiling (350/100),20)
    GUICtrlSetGraphic($gra2,$GUI_GR_RECT,350*$x/100,0,Ceiling( 350/100),20)
    GUICtrlSetGraphic($gra,$GUI_GR_REFRESH)
    GUICtrlSetGraphic($gra2,$GUI_GR_REFRESH)
    Sleep(30)
Next
 
Func _Color_SetSaturation($iColor, $nPercent)
    Local $aColorArray[4]
    $nPercent = 1 - ($nPercent / 100)
 
    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)
 
    If $aColorArray[1] = $aColorArray[2] And $aColorArray[2] = $aColorArray[3] Then Return -1
 
    $IndexMax = _ArrayMaxIndex($aColorArray, 1, 1)
    $IndexMin = _ArrayMinIndex($aColorArray, 1, 1)
    $IndexMid = 6 - ($IndexMax + $IndexMin)
 
    $aColorArray[$IndexMid] = ($aColorArray[$IndexMax] * ($aColorArray[$IndexMid] - $aColorArray[$IndexMin])) / ($aColorArray[$IndexMax] - $aColorArray[$IndexMin])
    $aColorArray[$IndexMid] = Round($aColorArray[$IndexMid] + ($aColorArray[$IndexMax] - $aColorArray[$IndexMid]) * $nPercent, 0)
 
    $aColorArray[$IndexMin] = Round($aColorArray[$IndexMax] * $nPercent, 0)
    Return 0 & "x" & Hex($aColorArray[1], 2) & Hex($aColorArray[2], 2) & Hex($aColorArray[3], 2)
EndFunc   ;==>_Color_SetSaturation
 
Func _Color_GetSaturation($iColor)
    Local $aColorArray[4]
 
    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)
 
    $IndexMax = _ArrayMaxIndex($aColorArray, 1, 1)
    $IndexMin = _ArrayMinIndex($aColorArray, 1, 1)
    $IndexMid = 6 - ($IndexMax + $IndexMin)
    Return Round((1 - $aColorArray[$IndexMin] / $aColorArray[$IndexMax]) * 100, 0)
EndFunc   ;==>_Color_GetSaturation
 
Func _Color_SetBrightness($iColor, $nPercent)
    Local $aColorArray[4]
    $nPercent = $nPercent / 100
 
    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)
 
    $IndexMax = _ArrayMaxIndex($aColorArray, 1, 1)
    $ActBrightness = $aColorArray[$IndexMax] / 255
    For $i = 1 To 3
        $aColorArray[$i] = Round($aColorArray[$i] * $nPercent / $ActBrightness, 0)
    Next
    Return 0 & "x" & Hex($aColorArray[1], 2) & Hex($aColorArray[2], 2) & Hex($aColorArray[3], 2)
EndFunc   ;==>_Color_SetBrightness
 
Func _Color_GetBrightness($iColor)
    Local $aColorArray[4]
 
    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)
 
    $IndexMax = _ArrayMaxIndex($aColorArray, 1, 1)
    Return Round(($aColorArray[$IndexMax] / 255) * 100, 0)
EndFunc   ;==>_Color_GetBrightness
 
Func _Color_SetHue($iColor, $iHue)
    Local $aColorArray[4]
 
    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)
 
    $iMax = _ArrayMax($aColorArray, 1, 1)
    $iMin = _ArrayMin($aColorArray, 1, 1)
 
    If $iHue >= 61 And $iHue <= 180 Then
        $IndexMax = 2
        If $iHue < 120 Then
            $IndexMin = 3
            $iMid = (($iMax - $iMin) * (120 - $iHue)) / 60 + $iMin
        Else
            $IndexMin = 1
            $iMid = (($iMax - $iMin) * ($iHue - 120)) / 60 + $iMin
        EndIf
    ElseIf $iHue >= 181 And $iHue <= 299 Then
        $IndexMax = 3
        If $iHue <= 240 Then
            $IndexMin = 1
            $iMid = (($iMax - $iMin) * (240 - $iHue)) / 60 + $iMin
        Else
            $IndexMin = 2
            $iMid = (($iMax - $iMin) * ($iHue - 240)) / 60 + $iMin
        EndIf
    ElseIf $iHue >= 300 Or $iHue <= 60 Then
        $IndexMax = 1
        If $iHue <= 60 Then
            $IndexMin = 3
            $iMid = (($iMax - $iMin) * ($iHue)) / 60 + $iMin
        Else
            $IndexMin = 2
            $iMid = (($iMax - $iMin) * (360 - $iHue)) / 60 + $iMin
        EndIf
    EndIf
    $IndexMid = 6 - ($IndexMin + $IndexMax)
    $aColorArray[$IndexMin] = $iMin
    $aColorArray[$IndexMax] = $iMax
    $aColorArray[$IndexMid] = $iMid
    Return 0 & "x" & Hex($aColorArray[1], 2) & Hex($aColorArray[2], 2) & Hex($aColorArray[3], 2)
EndFunc   ;==>_Color_SetHue
 
Func _Color_GetHue($iColor)
    Local $aColorArray[4], $Hue
 
    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)
 
    $IndexMax = _ArrayMaxIndex($aColorArray, 1, 1)
    $IndexMin = _ArrayMinIndex($aColorArray, 1, 1)
    $IndexMid = 6 - ($IndexMax + $IndexMin)
    $Lambda = ($aColorArray[$IndexMid] - $aColorArray[$IndexMin]) * 60 / ($aColorArray[$IndexMax] - $aColorArray[$IndexMin])
 
    Switch $IndexMax
        Case 1
            Switch $IndexMin
                Case 2
                    $Hue = 360 - $Lambda
                Case 3
                    $Hue = $Lambda
            EndSwitch
        Case 2
            Switch $IndexMin
                Case 1
                    $Hue = 120 + $Lambda
                Case 3
                    $Hue = 120 - $Lambda
            EndSwitch
        Case 3
            Switch $IndexMin
                Case 1
                    $Hue = 240 - $Lambda
                Case 2
                    $Hue = 240 + $Lambda
            EndSwitch
    EndSwitch
    Return Round($Hue, 0)
EndFunc   ;==>_Color_GetHue
 
Func _Color_FindComplementary($iColor)
    Local $iHue = Mod(_Color_GetHue($iColor) + 180, 360)
    Return _Color_SetHue($iColor, $iHue)
EndFunc   ;==>_Color_FindComplementary

However, I dont quite understand the hue changing function in this, or the brightness function. Are there any easier ways to do something like this? Otherwise, can someone please help me make sense of the hue and brightness functions?

Thanks.

Finally the autoit tags are working so there u go. Sorry bouth that, it was only showing the first few lines and then it swallowed up the edit button and all those buttons and so on.

Edited by Mikeman27294

Share this post


Link to post
Share on other sites
MvGulik

Try passing the code, after first switching the post editor in code mode. An post it in that mode to(if posting in normal mode also screws things up.) ...

Erm: Yep ... Don't post in Normal mode ;)

Grr: ... don't even switch to normal mode ... :graduated:

test: (will be removed again) (guess not yet ... )

#include<Array.au3>
#include<Color.au3>
#include<GUIConstantsEx.au3>


GUICreate("", 360, 350)
$gra = GUICtrlCreateGraphic(0, 0, 360, 20)
GUISetState()
$Color = 0xFFff00
GUISetBkColor($Color)
ConsoleWrite("Color: 0x" & Hex($Color, 6) & @CRLF)
ConsoleWrite("Saturation: " & _Color_GetSaturation($Color) & " %" & @CRLF)
ConsoleWrite("Brightness: " & _Color_GetBrightness($Color) & " %" & @CRLF)
ConsoleWrite("Hue: " & _Color_GetHue($Color) & " º" & @CRLF)
Sleep(1000)
ConsoleWrite("Complementary color: " & _Color_FindComplementary($Color) & @CRLF & @CRLF)
$i = 0
While $i < 2
    $i += 1
    GUISetBkColor(_Color_FindComplementary($Color))
    Sleep(500)
    GUISetBkColor($Color)
    Sleep(500)
WEnd
GUISetBkColor(0)
For $x = 0 To 360 Step 2
    $Hue = _Color_SetHue($Color, $x)
    ConsoleWrite("Hue: " & $x & " º" & $Hue & @CRLF)
;~ GUISetBkColor($hue)
    GUICtrlSetGraphic($gra, $GUI_GR_COLOR, $Hue, $Hue)
    GUICtrlSetGraphic($gra, $GUI_GR_RECT, $x, 0, 2, 20)
    GUICtrlSetGraphic($gra, $GUI_GR_REFRESH)
    Sleep(30)

Next
Sleep(500)
GUISetBkColor($Color)
GUICtrlDelete($gra)
$gra = GUICtrlCreateGraphic(0, 0, 350, 20)
$gra2 = GUICtrlCreateGraphic(0, 20, 350, 20)


ConsoleWrite("  Saturation: Brightness:" & @CRLF)
For $x = 0 To 100
    $sat = _Color_SetSaturation($Color, $x)
    $brigth = _Color_SetBrightness($Color, $x)
    ConsoleWrite($x & " % " & $sat & "   " & $brigth & @CRLF)
    GUICtrlSetGraphic($gra, $GUI_GR_COLOR, $sat, $sat)
    GUICtrlSetGraphic($gra2, $GUI_GR_COLOR, $brigth, $brigth)
    GUICtrlSetGraphic($gra, $GUI_GR_RECT, 350 * $x / 100, 0, Ceiling(350 / 100), 20)
    GUICtrlSetGraphic($gra2, $GUI_GR_RECT, 350 * $x / 100, 0, Ceiling(350 / 100), 20)
    GUICtrlSetGraphic($gra, $GUI_GR_REFRESH)
    GUICtrlSetGraphic($gra2, $GUI_GR_REFRESH)
    Sleep(30)
Next

Func _Color_SetSaturation($iColor, $nPercent)
    Local $aColorArray[4]
    $nPercent = 1 - ($nPercent / 100)

    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)

    If $aColorArray[1] = $aColorArray[2] And $aColorArray[2] = $aColorArray[3] Then Return -1

    $IndexMax = _ArrayMaxIndex($aColorArray, 1, 1)
    $IndexMin = _ArrayMinIndex($aColorArray, 1, 1)
    $IndexMid = 6 - ($IndexMax + $IndexMin)

    $aColorArray[$IndexMid] = ($aColorArray[$IndexMax] * ($aColorArray[$IndexMid] - $aColorArray[$IndexMin])) / ($aColorArray[$IndexMax] - $aColorArray[$IndexMin])
    $aColorArray[$IndexMid] = Round($aColorArray[$IndexMid] + ($aColorArray[$IndexMax] - $aColorArray[$IndexMid]) * $nPercent, 0)

    $aColorArray[$IndexMin] = Round($aColorArray[$IndexMax] * $nPercent, 0)
    Return 0 & "x" & Hex($aColorArray[1], 2) & Hex($aColorArray[2], 2) & Hex($aColorArray[3], 2)
EndFunc ;==>_Color_SetSaturation

Func _Color_GetSaturation($iColor)
    Local $aColorArray[4]

    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)

    $IndexMax = _ArrayMaxIndex($aColorArray, 1, 1)
    $IndexMin = _ArrayMinIndex($aColorArray, 1, 1)
    $IndexMid = 6 - ($IndexMax + $IndexMin)
    Return Round((1 - $aColorArray[$IndexMin] / $aColorArray[$IndexMax]) * 100, 0)
EndFunc ;==>_Color_GetSaturation

Func _Color_SetBrightness($iColor, $nPercent)
    Local $aColorArray[4]
    $nPercent = $nPercent / 100

    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)

    $IndexMax = _ArrayMaxIndex($aColorArray, 1, 1)
    $ActBrightness = $aColorArray[$IndexMax] / 255
    For $i = 1 To 3
        $aColorArray[$i] = Round($aColorArray[$i] * $nPercent / $ActBrightness, 0)
    Next
    Return 0 & "x" & Hex($aColorArray[1], 2) & Hex($aColorArray[2], 2) & Hex($aColorArray[3], 2)
EndFunc ;==>_Color_SetBrightness

Func _Color_GetBrightness($iColor)
    Local $aColorArray[4]

    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)

    $IndexMax = _ArrayMaxIndex($aColorArray, 1, 1)
    Return Round(($aColorArray[$IndexMax] / 255) * 100, 0)
EndFunc ;==>_Color_GetBrightness

Func _Color_SetHue($iColor, $iHue)
    Local $aColorArray[4]

    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)

    $iMax = _ArrayMax($aColorArray, 1, 1)
    $iMin = _ArrayMin($aColorArray, 1, 1)

    If $iHue >= 61 And $iHue <= 180 Then
        $IndexMax = 2
        If $iHue < 120 Then
            $IndexMin = 3
            $iMid = (($iMax - $iMin) * (120 - $iHue)) / 60 + $iMin
        Else
            $IndexMin = 1
            $iMid = (($iMax - $iMin) * ($iHue - 120)) / 60 + $iMin
        EndIf
    ElseIf $iHue >= 181 And $iHue <= 299 Then
        $IndexMax = 3
        If $iHue <= 240 Then
            $IndexMin = 1
            $iMid = (($iMax - $iMin) * (240 - $iHue)) / 60 + $iMin
        Else
            $IndexMin = 2
            $iMid = (($iMax - $iMin) * ($iHue - 240)) / 60 + $iMin
        EndIf
    ElseIf $iHue >= 300 Or $iHue <= 60 Then
        $IndexMax = 1
        If $iHue <= 60 Then
            $IndexMin = 3
            $iMid = (($iMax - $iMin) * ($iHue)) / 60 + $iMin
        Else
            $IndexMin = 2
            $iMid = (($iMax - $iMin) * (360 - $iHue)) / 60 + $iMin
        EndIf
    EndIf
    $IndexMid = 6 - ($IndexMin + $IndexMax)
    $aColorArray[$IndexMin] = $iMin
    $aColorArray[$IndexMax] = $iMax
    $aColorArray[$IndexMid] = $iMid
    Return 0 & "x" & Hex($aColorArray[1], 2) & Hex($aColorArray[2], 2) & Hex($aColorArray[3], 2)
EndFunc ;==>_Color_SetHue

Func _Color_GetHue($iColor)
    Local $aColorArray[4], $Hue

    $aColorArray[1] = _ColorGetRed($iColor)
    $aColorArray[2] = _ColorGetGreen($iColor)
    $aColorArray[3] = _ColorGetBlue($iColor)

    $IndexMax = _ArrayMaxIndex($aColorArray, 1, 1)
    $IndexMin = _ArrayMinIndex($aColorArray, 1, 1)
    $IndexMid = 6 - ($IndexMax + $IndexMin)
    $Lambda = ($aColorArray[$IndexMid] - $aColorArray[$IndexMin]) * 60 / ($aColorArray[$IndexMax] - $aColorArray[$IndexMin])

    Switch $IndexMax
        Case 1
            Switch $IndexMin
                Case 2
                    $Hue = 360 - $Lambda
                Case 3
                    $Hue = $Lambda
            EndSwitch
        Case 2
            Switch $IndexMin
                Case 1
                    $Hue = 120 + $Lambda
                Case 3
                    $Hue = 120 - $Lambda
            EndSwitch
        Case 3
            Switch $IndexMin
                Case 1
                    $Hue = 240 - $Lambda
                Case 2
                    $Hue = 240 + $Lambda
            EndSwitch
    EndSwitch
    Return Round($Hue, 0)
EndFunc ;==>_Color_GetHue

Func _Color_FindComplementary($iColor)
    Local $iHue = Mod(_Color_GetHue($iColor) + 180, 360)
    Return _Color_SetHue($iColor, $iHue)
EndFunc ;==>_Color_FindComplementary

Last 'Done' (I Hope) edit ... yep. (all edit-code mode, no normal edit-mode involved.)

Edited by iEvKI3gv9Wrkd41u

"Straight_and_Crooked_Thinking" : A "classic guide to ferreting out untruths, half-truths, and other distortions of facts in political and social discussions."
"The Secrets of Quantum Physics" : New and excellent 2 part documentary on Quantum Physics by Jim Al-Khalili. (Dec 2014)

"Believing what you know ain't so" ...

Knock Knock ...
 

Share this post


Link to post
Share on other sites
Mikeman27294

Thanks guys. That image tool looks like it is exactly what will answer my question.

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
Sign in to follow this  

  • Similar Content

    • Xandy
      By Xandy
      MapIt is a tile world editor.  MapIt was built around the concept of reversing Dragon Warrior map images.  MapIt can take image input and produce a tile and world array.
      MapIt features Unity style dragable labels that adjust property values.

      MapParser is a C++ project that scans images for unique tiles.  MapParser is very fast.  Due to hard drive failure, many bugs were restored b/c I had to rewind many years.  Frustrated with the design, I wrote a new version from the ground up.  This New Version:  AutoIt Front-end, command line controls, and shared with the world; so that I can't lose it again.
      You can toggle the C++ MapParser off to see the difference in speeds between the MapParser CPP verse AutoIt function.  Function is named Scan_Tiles() in AutoIt.  You can also chose to download without MapParser.exe.
      At the moment Scanning a image resets the arrays, but you can add tiles after scanning.
      Images can be added as tiles without scan image at all.  Then configure settings to give your world parameters and manually fill the world data with tile indexes.
      Using the settings you can change tile size after a scan.  Example: you wanted to replace a map with different sized tiles.
      Changing and replacing tile / world data is easy.  B/c tile world editor.

      Hotkeys, I use CTRL+R in image above to signal replace tile action and I use "G" to Get the tile under mouse.
      Hotkeys are not saved to disk and thus are set to default between sessions.
      I might draw the world to pre-rendered surfaces and use them as multi-layer someday.  I do that in my AutoIt, DragonWarrior Remake but I could spend forever unsure what features are important for this.  The DW_Remake has a method of replacing a tile with a tile on two layers.  So you could replace a tree on the first layer with a grass, and a tree in the second layer.  This is all getting very confusing.
      I attempted to write the good code.  If something could be better, please advise.
      Fifth release.  Enjoy.
      For download, videos, and example of created world file data; please visit the MapIt webpage: http://songersoft.com/programming/mapit/mapit_about.phtml
      Special thanks: @AdmiralAlkex, @Melba23, @MrCreatoR
      Main AutoIt source file: Will not run without other Includes and SDL DLLs.
      Last Update: 5/26/2018 3:45 PM EST
      REMOVED CODE BLOCK:  I was informed the this page loaded very slowly, one solution so far has been to remove the 2k lines in the code block.
      When I recieve more feedback from the User I may reduce image size or remove images.
      Next Version Added: $eSETTING_TILE_LAST_PATH I have the weekend, I want to write world layers with aBoard surfaces.  
    • lenclstr746
      By lenclstr746
      HELLO GUYS
      I'm a work on a background see and click bot project 
      I can complete it if your help me
      (using imagesearch , gdi+ and  fastfind)
    • dadalt95
      By dadalt95
      I would like to know if it's possible to pass an image recognition (captcha) system.
       
      What are the ways to achieve this?
      Just the references or links is enough for me by now.
       
      Thanks by now!
       
      Thanks!
    • fatpig
      By fatpig
      Dear AutoIT Community.
      I am currently working on a program that will display lots of images in a scroll down GUI.
      I create the GUI based on the number of images, which works fine.
      But all images I place using GuiCtrlCreatePic above a threshold of around 32000 pixels (cant say exactly) are placed at negative locations and finally will reach 0 again
      and will then populate on top of the images placed there before.
      For $i = 1 To $Images[0] ; Get picture dimensions $hImage = _GDIPlus_ImageLoadFromFile($ImgRep & $Images[$i]) $iX = _GDIPlus_ImageGetWidth($hImage) $iY = _GDIPlus_ImageGetHeight($hImage) _GDIPlus_ImageDispose($hImage) ; Resize & place images in GUI $Pic[$i] = GUICtrlCreatePic($ImgRep & $Images[$i], $Spacer, Round($yPos, 0), $MaxImgWidth, $MaxImgWidth * ($iY / $iX)) $yPos = $yPos + $MaxImgWidth * ($iY / $iX) + $Spacer $log = $log & "|" & $yPos $currentlut = $Images[1] Next I have found a limit at 32767 pixels for some GUI elements when googling around.
      Can someone tell me how to circumvent that?
      thanks!
      cheers
      Felix
    • DeathChicken
      By DeathChicken
      If possible please add or edit the comments to explain how this works.
       
      ;includes functions from other things
      #include <GDIPlus.au3>
      #include <ScreenCapture.au3>
      ;hotkeys
      HotKeySet("{ESC}", _exit)
      HotKeySet("{F1}", _scan)
      ;global variables
      Global $win_title                    ;name of the window
      Global $area_x                        ;
      Global $area_y                        ;
      Global $area_w                       ;
      Global $area_h                        ;
      Global $cursor                         ;
      Global $rect_file                      ;
      Global $hbmpscreen              ;
      Global $i=  1043                      ;moves the rect
      Global $ii=    378                      ;moves the rect
      Global $x=1044                        ;inner rect offset
      Global $y=501                          ;inner rect offset
      Global $hbmprect                    ;image inside rect
      Global $hscreen                        ;image whole screen
                                         
      _GDIPlus_Startup()                    ;?
      ;display hotkeys on screen
      ToolTip("Press F1 to scan | Press ESC to Exit",0,0)
                                          ;infinite loop to keep prog running
      While 1
          Sleep(100)
      WEnd
      Func _scan()
      ;~ reads your screen area:
      _read()
      ;~ converts screen captured into bmp
      _convert()
      ;~ .  Loads converted bmp to be read
      _loadBMP()
      ;~ compares the bmp of your scanned screen to the actual screen that is being displayed
      _compare()
      EndFunc
                                          ;reads screen
      Func _read()
          $hscreen = _ScreenCapture_CaptureWnd("", WinGetHandle($win_title), $area_x, $area_y, $area_x + $area_w, $area_y + $area_h, $cursor)
      EndFunc
                                          ;converts screen into bmp
      Func _convert()
          _GDIPlus_BitmapCreateFromHBITMAP($hscreen)
      EndFunc
                                          ;loads converted screen
      Func _loadBMP()
      _GDIPlus_BitmapCreateFromFile($rect_file)
      EndFunc
                                          ;compares savedBMP to current screen
      Func _compare()
      ;If(                              below code                                     ) = (                   below code           ) Then
      If _GDIPlus_BitmapGetPixel($hbmpscreen, ($i + $x) - $area_x, ($ii + $y) - $area_y) = _GDIPlus_BitmapGetPixel($hbmprect, $x, $y) Then
      ;display message box titled found with a message of found
      MsgBox("","","found")
      ;if above is not correct then
      EndIf
      EndFunc
                                          ;exit func
      Func _exit()
          Exit
      EndFunc
×