【问题标题】:How to get a global(screen, device) coordinates with CGContext?如何使用 CGContext 获取全局(屏幕、设备)坐标?
【发布时间】:2010-11-19 07:12:03
【问题描述】:

我尝试为 Mac OSX 中的浏览器制作插件。

我从浏览器进程中获得了一个 CGContext。

所以我可以用它画画。

我要做的是为事件处理创建一个窗口,有人在这个神奇的网站上给我建议:)

我可以轻松地制作一个透明窗口,但我可以将那个窗口移动到适当的位置。

我确切知道窗口的大小,但我可以确定窗口的原点。

我得到的只有 CGContextRef。

我试过这个。

NSRect rect = [mywindow frame];

CGPoint origin;
origin.x = rect.origin.x;
origin.y = rect.origin.y;

CGPoint globalOrigin = CGContextConvertPointToDeviceSpace(cgContext, origin);

if (globalOrigin.x != origin.x || globalOrigin.y != origin.y) {
    NSPoint newPoint; 
    newPoint.x = globalOrigin.x;
    newPoint.y = globalOrigin.y;
    [mywindow setFrameOrigin:newPoint];
}

但没有运气。它返回了我给它的值

有什么建议吗?

提前致谢。

【问题讨论】:

    标签: macos plugins screen coordinates cgcontext


    【解决方案1】:

    您在 NPAPI 插件中获得的 CGContext 不一定与任何窗口相关联,因此无法从 CGContext 映射到屏幕上的某个位置。

    【讨论】:

      【解决方案2】:

      smorgan 的回答是对的。

      对于可能需要更多解释的人,我会补充我的想法。

      我认为插件进程有 CGContext 没有真正的操作系统窗口。因为浏览器进程需要窗口,而插件进程只是将绘图数据传递给浏览器进程,所以插件进程的CGContext没有位置。它可能只是内存缓冲区。

      谢谢斯摩根。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-22
        • 2015-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        相关资源
        最近更新 更多