La différence de résolution d'écran avec un écran rétinien

1

Je peux obtenir la résolution d'écran de mon Macbook pro en utilisant le code AppleScript sur ce site.

https://stackoverflow.com/questions/1866912/applescript-how-to-get-current-display-resolution

on getScreenSize()
    -- from https://stackoverflow.com/questions/1866912/applescript-how-to-get-current-display-resolution
    set resolutions to {}
    repeat with p in paragraphs of ¬
        (do shell script "system_profiler SPDisplaysDataType | awk '/Resolution:/{ printf \"%s %s\\n\", $2, $4 }'")
        set resolutions to resolutions & {{word 1 of p as number, word 2 of p as number}}
    end repeat
    -- return the last one assuming that it should be the one that is not the Laptop screen
    return item (length of resolutions as integer) of resolutions
end getScreenSize

La valeur renvoyée correspond aux informations de "À propos de ce Mac".

entrez la description de l'image ici

Cependant, lorsque je reçois la taille de la fenêtre d’un débogueur, elle affiche la moitié de la valeur du système. Je crée une fenêtre pour remplir un écran et vérifie les limites de la fenêtre.

entrez la description de l'image ici

Ceci est déroutant et problématique car j'écris du code AppleScript qui aligne plusieurs fenêtres à l'aide de la set boundscommande.

set bounds of s to {x1, y1, x2, y2}

Qu'est-ce qui fait la différence entre la résolution d'affichage d'un système et les limites d'une fenêtre? Est-il juste de supposer que (résolution du système) / 2 doit être utilisé pour définir les limites des écrans pour la rétine?

Prosseek
la source

Réponses:

2

MacBookPro a une résolution effective qui dépend de l’échelle que vous avez configurée pour l’affichage.

entrez la description de l'image ici

Vous devez utiliser la résolution effective dans votre code. Vous pouvez l'obtenir à partir de ce code, mais cela ne fonctionne que lorsqu'il n'y a pas de monteurs externes.

tell application "Finder"
    set screen_resolution to bounds of window of desktop
end tell

Référence

Prosseek
la source