Domanda

C'è un modo semplice per fare questo che funziona a 10.5?

Nel 10,6 posso utilizzare NSImage CGImageForProposedRect: contesto NULL: suggerimenti NULL: NULL

Se io non sto usando 1b immagini in bianco e nero (come Gruppo 4 TIFF), posso usare le bitmap, ma cgbitmaps sembrano non come quella messa a punto ... C'è un modo generale di fare questo?

Ho bisogno di fare questo perché ho un IKImageView che sembra solo voler aggiungere CGImages, ma tutto quello che ho sono NSImages. Attualmente, sto usando un setImage privato: (NSImage *) metodo che mi piacerebbe davvero davvero piuttosto non utilizzerò ...

È stato utile?

Soluzione

Trovato la seguente soluzione su questa pagina :

NSImage* someImage;
// create the image somehow, load from file, draw into it...
CGImageSourceRef source;

source = CGImageSourceCreateWithData((CFDataRef)[someImage TIFFRepresentation], NULL);
CGImageRef maskRef =  CGImageSourceCreateImageAtIndex(source, 0, NULL);

Tutti i metodi sembrano essere 10.4+ così si dovrebbe andare bene.

Altri suggerimenti

[Questa è la strada lunga. Si dovrebbe fare solo se si sta ancora sostenendo una vecchia versione di OS X. Se è possibile richiedere 10.6 o versioni successive, basta utilizzare il CGImage metodo .]

  1. Crea un CGBitmapContext.
  2. Crea un NSGraphicsContext per il contesto bitmap
  3. Imposta il contesto grafico come il contesto attuale
  4. Disegna l'immagine
  5. Creare il CGImage dal contenuto del contesto bitmap.
  6. Release contesto bitmap.

Come di Snow Leopard, si può solo chiedere l'immagine per creare un CGImage per voi , inviando il NSImage un messaggio CGImageForProposedRect:context:hints:

Ecco una risposta più dettagliata per l'utilizzo di - CGImageForProposedRect:context:hints::

NSImage *image = [NSImage imageNamed:@"image.jpg"];

NSRect imageRect = NSMakeRect(0, 0, image.size.width, image.size.height);

CGImageRef cgImage = [image CGImageForProposedRect:&imageRect context:NULL hints:nil];

Appena fatto questo utilizzando CGImageForProposedRect:context:hints: ...

NSImage *image; // an image
NSGraphicsContext *context = [NSGraphicsContext currentContext];
CGRect imageCGRect = CGRectMake(0, 0, image.size.width, image.size.height);
NSRect imageRect = NSRectFromCGRect(imageCGRect);
CGImageRef imageRef = [image CGImageForProposedRect:&imageRect context:context hints:nil];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top