2012-11-28 5 views
1

En utilisant drawInRect Je reçois des résultats incohérentsMac app - problèmes avec NSImage drawInRect

Parfois, les images tirent correctement, et parfois les images ressemblent à elles sont un demi-pixel de:

enter image description here

En haut à gauche, vous verrez que l'image de la coiffe du curseur est normale, alors le remplissage a des bords flous, même s'ils sont dessinés avec le même x, y ...

// top cap 
[topCap drawInRect:NSMakeRect(5, 5, 11, 7) 
      fromRect:NSZeroRect 
     operation:NSCompositeSourceOver 
      fraction:1]; 

// background fill 
[topFill drawInRect:NSMakeRect(5, 12, 11, (CGRectGetHeight(aRect) - 23)) 
      fromRect:NSZeroRect 
      operation:NSCompositeSourceOver 
      fraction:1]; 

Flèche inférieure gauche, même situation.

Flèche vers la droite, situation similaire. Vous pouvez voir que l'image de la coiffe gauche est correctement affichée, alors le remplissage de l'arrière-plan (une image large de 1px) devient flou. Je me demande si cela a quelque chose à voir avec l'étirement de l'image, car il semble que les images que j'essaie de remplir un rectangle avec un rendu médiocre.

Merci pour tout commentaire.

Répondre

0

Si vous savez pourquoi drawInRect déforme l'image, merci de laisser une réponse. Voici la façon dont je trouve pour contourner ceci:

Pour certaines régions, j'ai utilisé colorWithPatternImage

NSColor* backgroundFill = [NSColor colorWithPatternImage:backgroundImage]; 
[backgroundFill set]; 
NSRectFill(background); 

Le problème que je suis tombé sur ce que l'origine du motif est défini sur la fenêtre pas la vue, donc Parfois, le motif serait mal aligné.

Pour plusieurs zones j'ai utilisé NSDrawThreePartImage qui a correctement carrelé l'image sans la déformer. Même quand je n'avais pas 3 images, j'ai juste mis la même image en 3 fois.