2009-07-16 8 views
6

Necesito obtener CGContextRef del objeto NSView. No sería tan malo si supiera cómo.Obtener un CGContextRef de NSView fuera de drawRect?

En Carbono esto se hizo así:

CGContextRef cgref = (libvlc_drawable_t)GetWindowPort(HIViewGetWindow((OpaqueControlRef*)hiViewRef)); 

Obviamente se puede hacer creando una subclase NSView (o no lo subclase) y la captura de él en ella es drawRect, pero eso es demasiado feo.

¿Sus ideas?

+2

no sé lo que está haciendo, pero suena como algo que conducirá a mucha frustración. – Chuck

+0

Estoy incorporando el reproductor de video VLC en mi aplicación. Necesito un "dibujable" al cual ... dibujaría. – Maleev

Respuesta

9

nunca he utilizado pero que este es su camino:

[myView lockFocus]; 
imageContext = (CGContextRef)[[NSGraphicsContext currentContext] 
            graphicsPort]; 
... 
[myView unlockFocus]; 

también echar un vistazo a la lockFocusIfCanDraw de NSView

+1

Eso es lo que yo haría, también, pero vale la pena aclarar que probablemente no deberías contar con que ese contexto sea válido más allá del mensaje 'unlockFocus'. –

+0

Pensé que también, pero lo que es interesante, que en MS Windows, uso ID de ventana, que también se supone que es impermanente, y funciona bien (ver mi comentario en el bloque de preguntas) – Maleev

Cuestiones relacionadas