2009-07-16 22 views
6

NSView nesnesinin CGContextRefini almam gerekiyor. Nasıl olduğunu bilsem çok kötü olmaz.drawRect dışında bir NSView CGContextRef elde edin?

Carbon bu şey böyle yapıldı:

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

Açıkçası NSView sınıflara tarafından yapılan (veya alt sınıf var) ve onun içinde onu yakalamak drawRect, ama bu çok çirkin edilebilir.

Fikirleriniz?

+2

Ben ne yaptığını bilmiyorum NSView ait lockFocusIfCanDraw için bir göz var, ama çok fazla hayal kırıklığına yol açacak bir şey gibi geliyor. – Chuck

+0

VLC video oynatıcımı uygulamamda gömüyorum. Çizebileceğim "çekilebilir" lere ihtiyacım var. – Maleev

cevap

9

ben hiç kullanmadım ama düşünmek bu yoludur:

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

da

+1

Ben de öyle yaptım, ama muhtemelen bu bağlamda 'unlockFocus' mesajından sonra geçerli sayılmaması gerektiğini açıklığa kavuşturmaya değer. –

+0

Bunu da düşündüm, fakat ilginç olan şey, MS Windows'da, aynı zamanda hataya aykırı olması gereken pencere kimliğini kullanıyorum ve iyi çalışıyor (soru bloğundaki yorumuma bakın) – Maleev

İlgili konular