我有一个用于查看图像的 Mac 插件。它最初是用 Quickdraw 编写的,我正在尝试将其移动到 Quartz。
我目前的问题是起源。在 QD 中,原点(明显地)是插件矩形的左上角。在 Quartz 中,它看起来比插件矩形顶部低一个屏幕高度(不包括 Firefox 按钮等)。这实际上是在我的插件矩形中间随机的某个地方。
这也意味着我需要知道浏览器窗口绘图部分的大小。我确定我可以算出一个窗口有多大,但是我如何算出选项卡等占用了多少空间? Mac 不知道这些事情,是吗?
在相关说明中,有人知道为什么 Apple 决定将原点放在左下角吗?我觉得有点傻。
最佳答案
如果您使用的是 NSView,则可以创建返回 YES 的 -isFlipped
函数的实现,这将允许您基于翻转的坐标系进行绘制。
或者,如果您不使用 NSView 而是进行原始 CoreGraphics 绘图,您可以像这样修改 CTM:
CGContextScaleCTM( context, 1.0, -1.0 );
如果您使用 CGContextRef 执行此操作,则您应该先保存现有的 CTM,并在完成后恢复它:
CGContextSaveGState( context );
// do your stuff here ...
CGContextRestoreGState( context );
哦,原点在左下角,因为 Quartz 渲染系统基于 PDF 图形系统,它本身基于 PostScript,并且原点在左下角。
关于c++ - 在 Quartz 插件中找到左上角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/849734/