【问题标题】:Obtain a CGContextRef of NSView outside of drawRect?在drawRect之外获取NSView的CGContextRef?
【发布时间】:2009-07-16 18:14:38
【问题描述】:

我需要获取 NSView 对象的 CGContextRef。如果我知道怎么做就不会那么糟糕了。

在 Carbon 中,这件事是这样完成的:

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

显然可以通过继承 NSView(或者它的子类)并在它的 drawRect 中捕获它来完成,但这太丑了。

你的想法?

【问题讨论】:

  • 我不知道你在做什么,但这听起来会导致很多挫败感。
  • 我在我的应用程序中嵌入了 VLC 视频播放器。我需要一个“可绘制的”,它会......绘制。

标签: cocoa macos graphics core-graphics nsview


【解决方案1】:

我从未使用过它,但它认为这是你的方式:

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

也看看NSView的lockFocusIfCanDraw

【讨论】:

  • 我也会这样做,但值得澄清的是,您可能不应该指望该上下文在 unlockFocus 消息之后仍然有效。
  • 也想过,但有趣的是,在 MS Windows 上,我使用的是窗口 id,它也应该是无常的,而且效果很好(请参阅我在问题块中的评论)跨度>
猜你喜欢
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 2013-02-16
  • 1970-01-01
相关资源
最近更新 更多