Jump to content

Converting Coordinates To Different Aspect Ratios


Recommended Posts

Hi,

I'm currently developing a program that uses a 16:9 aspect ratio and I'm wondering there is an easier way than hand jamming new coordinates for 4:3 aspect ratio. I've been searching the forums and googling all over and can't seem to find a good solution. I found this example below but its not working as intended. Thanks in advance...

Func CoordSwitch($coordx0, $coordy0)
;16:9
Call("DesktopResolution")
If $Resolution = "1920x1080" Or $Resolution = "1600x900" Or $Resolution = "1366x768" Or $Resolution = "1360x768" Or $Resolution = "1280x720" Then
$OriginalXCoord = $coordx0
$OriginalYCoord = $coordy0
$ResolutionXorY = StringSplit($Resolution, "x")
$AdjustedXCoord = ($ResolutionXorY[1] / 1920) * $OriginalXCoord
$AdjustedYCoord = ($ResolutionXorY[2] / 1080) * $OriginalYCoord
MouseClick("Left", $AdjustedXCoord, $AdjustedYCoord, 1)

EndIf
; 16:10
If $Resolution = "1680x1050" Or $Resolution = "1440x900" Or $Resolution = "1280x800" Then
$OriginalXCoord = $coordx0
$OriginalYCoord = $coordy0
$ResolutionXorY = StringSplit($Resolution, "x")
$AdjustedXCoord = ($ResolutionXorY[1] / 1680) * $OriginalXCoord
$AdjustedYCoord = ($ResolutionXorY[2] / 1050) * $OriginalYCoord
MouseClick("Left", $AdjustedXCoord, $AdjustedYCoord, 1)
EndIf
; 4:3 Resoltions
If $Resolution = "1400x1050" Or $Resolution = "1360x1024" Or $Resolution = "1280x960" Or $Resolution = "1152x864" Or $Resolution = "1024x768" Or $Resolution = "800x600" Then
$OriginalXCoord = $coordx0
$OriginalYCoord = $coordy0
$ResolutionXorY = StringSplit($Resolution, "x")
$AdjustedXCoord = ($ResolutionXorY[1] / 1400) * $OriginalXCoord
$AdjustedYCoord = ($ResolutionXorY[2] / 1050) * $OriginalYCoord
MouseClick("Left", $AdjustedXCoord, $AdjustedYCoord, 1)
EndIf
EndFunc

Func DesktopResolution()
Switch $resolution = ""
Case @DesktopWidth = 800 And @DesktopHeight = 600
$resolution = "800x600"
Case @DesktopWidth = 1024 And @DesktopHeight = 768
$resolution = "1024x768"
Case @DesktopWidth = 1152 And @DesktopHeight = 864
$resolution = "1152x864"
Case @DesktopWidth = 1280 And @DesktopHeight = 720
$resolution = "1280x720"
Case @DesktopWidth = 1280 And @DesktopHeight = 800
$resolution = "1280x800"
Case @DesktopWidth = 1280 And @DesktopHeight = 960
$resolution = "1280x960"
Case @DesktopWidth = 1360 And @DesktopHeight = 768
$resolution = "1360x768"
Case @DesktopWidth = 1366 And @DesktopHeight = 768
$resolution = "1366x768"
Case @DesktopWidth = 1440 And @DesktopHeight = 900
$resolution = "1440x900"
Case @DesktopWidth = 1400 And @DesktopHeight = 1050
$resolution = "1440x900"
Case @DesktopWidth = 1600 And @DesktopHeight = 900
$resolution = "1600x900"
Case @DesktopWidth = 1920 And @DesktopHeight = 1080
$resolution = "1920x1080"
Case Else
Return SetError(1, 0, $resolution)
EndSwitch
Return $resolution
EndFunc
Link to comment
Share on other sites

Reduced your function

CoordSwitch($coordx0, $coordy0)

Func CoordSwitch($OriginalXCoord, $OriginalYCoord)
    Local $AdjustedXCoord, $AdjustedYCoord, $DH, $DW

    $DW = @DesktopWidth
    $DH = @DesktopHeight
    
    Switch $DW & 'x' & $DH
        Case "1920x1080", "1600x900", "1366x768", "1360x768", "1280x720" ;16:9
            $AdjustedXCoord = ($DW / 1920) * $OriginalXCoord
            $AdjustedYCoord = ($DH / 1080) * $OriginalYCoord
            MouseClick("Left", $AdjustedXCoord, $AdjustedYCoord, 1)
        Case "1680x1050", "1440x900", "1280x800" ; 16:10
            $AdjustedXCoord = ($DW / 1680) * $OriginalXCoord
            $AdjustedYCoord = ($DH / 1050) * $OriginalYCoord
            MouseClick("Left", $AdjustedXCoord, $AdjustedYCoord, 1)
        Case "1400x1050", "1360x1024", "1280x960", "1152x864", "1024x768", "800x600" ; 4:3
            $AdjustedXCoord = ($DW / 1400) * $OriginalXCoord
            $AdjustedYCoord = ($DH / 1050) * $OriginalYCoord
            MouseClick("Left", $AdjustedXCoord, $AdjustedYCoord, 1)
        Case Else
            MsgBox(0, '???', $DW & 'x' & $DH)
    EndSwitch
EndFunc
Link to comment
Share on other sites

I tried editing my post to take that other function out, didn't realize it was in there when I posted. Other than that this will operate the exact same way as the one I posted..Thanks for the cleanup though.

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...