2010-11-08 42 views
0

I ont une application qui a actuellement cette ligne:NSBezierPath à NSImage afin d'éviter CoreAnimation

[myView setWantsLayer:YES]; 

Afin d'attirer un élément d'interface utilisateur graphique par l'intermédiaire d'NSBezierPath. Cette ligne est obligatoire, sinon, lorsque l'utilisateur saisit un objet NSTextField adjacent (et qui se chevauche), le contenu de myView shudders.

J'ai découvert que l'appel de CoreAnimation charge le framework OpenGL, mais ne le décharge pas. Voirthis question.

Je pense que je peux contourner ce problème en tirant le NSBezierPath à NSImage puis pour afficher la NSImage au lieu du NSBezierPath, mais je ne l'ai pas trouvé une seule source qui me montre comment aller à ce sujet.


Edit:

Je dois souligner que je veux sauver ce AVANT L'NSBezierPath est affiché - donc des solutions qui draw an existing view to an NSImage ne sont pas utiles.


Question:

quelqu'un peut me diriger dans la bonne direction pour convertir NSBezierPath à un NSImage?

Répondre

3

Vous pouvez dessiner n'importe quoi directement dans un NSImage et vous pouvez créer un NSImage vide. Créez donc une image dont la taille est la taille des limites du chemin, traduisez le chemin de sorte qu'il soit à l'origine de l'image, puis verrouillez le focus sur l'image, dessinez le chemin et déverrouillez le focus.

+0

C'est génial. Je n'ai pas réussi à le faire avant parce que je cherchais une méthode de Bézier spécifique. Merci encore Peter! –