2010-07-24 4 views
0

J'ai un NSImage avec différentes images à l'intérieur. Les positions des images à l'intérieur resteront les mêmes tout le temps, j'ai donc besoin de spécifier un rectangle pour obtenir une sous-image à la position du rectangle à l'intérieur de l'image. Comment cela pourrait-il être fait?Couper NSImage autour de certains NSRect

Répondre

3

Pourquoi y a-t-il plusieurs images à l'intérieur d'une même image? Optimisation prématurée?

Dans tous les cas, lorsque vous draw the image, l'un des paramètres que vous passez est la section de l'image que vous voulez. Normalement, vous passez soit les limites de l'image, soit le rect zéro (qui signifient tous deux la même chose), mais vous pouvez passer un sous-triangle si vous le souhaitez.

Si le rectangle de destination est plus grand que le rectangle source, il sera mis à l'échelle (non proportionnellement); s'il est plus petit, il sera réduit (non proportionnellement). Ajustez la taille du rectangle de destination pour qu'elle corresponde à celle du rectangle source si vous ne voulez pas de mise à l'échelle.

Si vous souhaitez laisser le dessin à un NSImageView, create an empty NSImage of the desired size, dessinez-le, puis passez cette image à la vue de l'image. Cela détruit probablement tout avantage de performance que vous espériez obtenir en les écrasant tous ensemble en une seule image.

Vous pouvez également créer une sous-classe personnalisée de NSView, NSImageView ou CALayer qui a une propriété pour le NSImage et une propriété pour le rectangle source, et dessine uniquement cette section.