vykio / java-rdp

Implémentation d'un simulateur de réseaux de Pétri en Java en utilisant Swing principalement
https://vykio.github.io/java-rdp/
3 stars 2 forks source link

[BUG REPORT] Placement objet décalé à cause de la mise à l'échelle de l'OS #13

Open vykio opened 3 years ago

vykio commented 3 years ago

Description du bug Les objets (places et transitions) sont placés au mauvais endroit. Pour une mise à l'échelle de 100%: Tout est bien. Pour une mise à l'échelle différente de 100%, les objets sont placés au mauvais endroit.

Comment le reproduire ? Etapes:

  1. Sur windows par exemple, définir la mise à l'échelle de l'écran à 125% (au lieu de 100%)
  2. Lancer le programme

Comportement voulu Les objets et les clics doivent être mis à la bonne place, peu importe le facteur d'agrandissement de l'écran.

Sur quelle plateforme :

Contexte additionnel Il se peut que cela règle le problème sur MacOs. De ce fait, le #9 est peut être pas résolu encore...

vykio commented 3 years ago

Il faut récupérer le facteur d'agrandissement grâce à la fonction suivante :

java.awt.Toolkit.getDefaultToolkit().getScreenResolution()

Pour une mise à l'échelle windows de 100%, la fonction retourne 96 (dpi). On sera en mesure de récupérer un facteur d'agrandissement en fonction de ce rapport. (produit en croix)

vykio commented 3 years ago

After commit 8800c09 :

if (OS.isMacOs()) {
    if (isMacRetinaDisplay()) {
        return 2.0;
    } else {
        return 1.0;
    }
}
return java.awt.Toolkit.getDefaultToolkit().getScreenResolution() / hundredPercent;

à voir si l'on doit aussi prendre en compte la mise à l'échelle de l'écran sur MacOs.