Transformer une NSView en NSImage
maestric
Membre
Comment faire pour transformer une NSView créée dans le code en NSImage ?
Ceci fonctionne, mais est trop lent :
Le mini-projet qui va avec :
http://www.maestric.com/shared/cocoa/ViewToImage.zip
Une capture d'écran :
Ceci fonctionne, mais est trop lent :
SimpleView *myView2 = [[SimpleView alloc] initWithFrame:NSRectFromString(@"0 0 20 20")];<br /> <br />NSData *imageData = [myView2 dataWithPDFInsideRect:NSRectFromString(@"0 0 20 20")]; <br />NSBitmapImageRep* rep = [[NSBitmapImageRep alloc] initWithData:imageData];<br /> <br />NSImage *anImage = [[[NSImage alloc] initWithSize:NSZeroSize] autorelease];<br />[anImage addRepresentation:rep];
Le mini-projet qui va avec :
http://www.maestric.com/shared/cocoa/ViewToImage.zip
Une capture d'écran :
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
[webView lockFocus];
NSBitmapImageRep *bitmap=[[NSBitmapImageRep alloc] initWithFocusedViewRect:r];
[webView unlockFocus];
Ou un mais dans ce cas 10.4 uniquement.
NSBitmapImageRep *bitmap=[self bitmapImageRepForCachingDisplayInRect:rect];
[self cacheDisplayInRect:rect toBitmapImageRep:bitmap];
Mais puisque c'est toi qui dessine ta vue tu peux dessiner directement dans un NSImage
[unNSImage lock];
{
[dessine moi un cercle]
}
[unNSImage unlock];
J'ai essayé ceci, pour faire directement la NSImage comme tu le proposes au lieu de passer par une NSView :
Et ça ne fonctionne pas :-\\ Ni le "background color", ni le trait.
D'autres idées ?
En fait je ne voyais rien parce-que comme tu l'as dit je n'avais pas fait de stroke, mais aussi parce-que le "setBackgroundColor" ne fonctionnait pas.
Je laisse un bout de code complètement fonctionnel pour ceux qui repasseront sur ce topic :
Voilà ce que ça donne :