conversion coordonnées (origine en haut/à  gauche <--> en bas à  gauche)

APAP Membre
04:17 modifié dans API AppKit #1
Bonjour,

Je cherche à  trouver la méthode qui marche dans tous les cas, pour un point donné en origine en haut à  gauche, avoir la correspondance en origine en bas à  gauche sachant que cela doit fonctionner dans toutes les configuration multi-écran possible.

Merci d'avance pour votre aide :)

Réponses

  • iLandesiLandes Membre
    04:17 modifié #2
    bonjour,

    explore les methodes : Flipped et isFlipped
  • CéroceCéroce Membre, Modérateur
    04:17 modifié #3
    Jette un oe“il à  -[NSScreen frame].

    Avec les coordonnées de la souris (c'est ce point que tu veux localiser ?), tu dois pouvoir savoir sur quel écran se trouve le point et changer de système de coordonnées.

    Je t'avoue que nous manquons un peu de détails sur ce que tu souhaites faire plus exactement.
  • APAP Membre
    04:17 modifié #4
    Merci pour ta réponse.
    C'est ce que j'utilise déjà  mais ca ne marche pas dans tous les cas.
    En fait je veux transformer des rectangles et des points d'un système à  l'autre. Mon problème commence quand les frames de NSScreen et mon point ne sont pas dans le même système de coordonnées
  • APAP Membre
    04:17 modifié #5
    dans 1289898082:

    bonjour,

    explore les methodes : Flipped et isFlipped

    Merci pour ta réponse.
    Ok pour déterminer si c'est flipped ou non mais comment faire pour faire la transformation?
  • AliGatorAliGator Membre, Modérateur
    novembre 2010 modifié #6
    en iOS tu as CGRectApplyAffineTransform & consoeurs pour appliquer une AffineTransform à  un CGRect (pareil pour CGPoint, CGSize, ...)
    En MacOS tu dois aussi avoir dans la classe NSAffineTransform des méthodes pour transformer des NSPoint et des NSSize etc.

    Suffit donc de créer une AffineTransform contenant la transformation à  réaliser (scale(1,-1) suivi de translate(0,-frameHeight) genre) et ensuite appliquer cette transformation à  tes NSRect, NSPoint, NSSize... ou même mieux, empiler ce NSAffineTransform dans le GraphicContext courant (avec un appel à  -concat) comme ça elle est appliquée à  toutes les opérations de dessin qui suivront dans ta vue...

    Pour plus d'infos, tout est détaillé dans la doc
  • CéroceCéroce Membre, Modérateur
    04:17 modifié #7
    Il existe aussi les méthodes -[NSView convertPoint:fromView:] et consoe“urs, qui font les conversions selon les matrices de transformation de chaque vue.
Connectez-vous ou Inscrivez-vous pour répondre.