【发布时间】:2017-02-19 19:21:17
【问题描述】:
我正在为 mac 开发类似放大镜的应用程序。我的目标是能够在放大时精确定位单个像素。我在 mouseMoved(带有事件:NSEvent)中使用此代码:
let captureSize = self.frame.size.width / 9 //9 is the scale factor
let screenFrame = (NSScreen.main()?.frame)!
let x = floor(point.x) - floor(captureSize / 2)
let y = screenFrame.size.height - floor(point.y) - floor(captureSize / 2)
let windowID = CGWindowID(self.windowNumber)
cgImageExample = CGWindowListCreateImage(CGRect(x: x, y: y, width: captureSize,
height: captureSize), CGWindowListOption.optionOnScreenBelowWindow, windowID,
CGWindowImageOption.bestResolution)
cgImage 的创建发生在 CGWindowListCreateImage 方法中。当我稍后在 NSView 中绘制它时,结果如下所示:
它看起来很模糊/好像在创建 cgImage 期间应用了一些抗锯齿。我的目标是获得每个像素的锐利表示。谁能指出我正确的方向?
【问题讨论】:
标签: macos core-graphics retina-display nswindow zooming