2010-01-22 23 views
2

Voici ce que j'essaie d'accomplir: Je travaille sur un émulateur de calculateur TI open source où j'essaye actuellement d'ajouter le support de la peau. L'image de la peau est juste un NSImageView avec son image définie sur l'image de la peau. Je redéfinir la méthode mouseDown: et obtenir l'emplacement de la souris dans les coordonnées NSImageView en utilisant convertPointFromBase: avec la valeur de retour de locationInWindow comme point à convertir.Traduction NSPoint cliqué dans NSImageView pour corriger les coordonnées de pixel dans le sous-jacent NSBitmapImageRep

Ensuite, je récupère le NSBitmapImageRep sous-jacent à partir de NSImageView en utilisant bestRepresentationForDevice: avec un argument nul. Enfin j'appelle getPixel: atX: y sur le NSBitmapImageRep avec point.x et point.y pour l'emplacement.

Cependant, l'origine de NSImageView commence en bas à gauche (comme d'habitude), tandis que les coordonnées de NSBitmapImageRep commencent en haut à gauche. Je n'arrive pas à trouver un moyen évident de compenser cela, donc le test de hit pour les clics sur les boutons ne fonctionne pas correctement. Toute aide est grandement appréciée.

Répondre

0

semble assez facile pour moi, calculer simplement la coordonnée y en fonction de la hauteur du rect:

NSPoint pointInFlippedRect(NSPoint inPoint, NSRect aRect) 
{ 
    return NSMakePoint(inPoint.x , NSHeight(aRect) - inPoint.y); 
} 
1

Je ne considérais primordial isFlipped pour revenir OUI dans mon sous-classe NSImageView. Cela prend soin du problème.

+0

Veuillez marquer cette question comme "répondue" en utilisant la réponse de Keniger afin qu'elle n'encombre pas la liste des questions sans réponse. –