Я разрабатываю лупу, как приложение для mac. Моя цель состоит в том, чтобы быть в состоянии точно определить отдельные пиксели при увеличении Я использую этот код в mouseMoved (с событием: NSEvent):.CGWindowListCreateImage дает размытые cgImage при увеличении
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. Моя цель - получить четкое представление каждого пикселя. Может кто-то указать мне верное направление?
Уважаемый @Tuslareb, не могли бы вы быть добрыми и представить пример «контекста»? Я столкнулся с той же проблемой. Я также создаю скриншот, используя 'CGWindowListCreateImage', но полученный CGImage размывается при увеличении. Я в основном конвертирую скриншот в 'NSImage', а затем отображаю его в ImageView. – ixany
@ixany Я обновил свой ответ с помощью некоторого примера кода. В принципе, я рисую CGImage, который я получаю из вызова CGWindowListCreateImage в методе drawRect пользовательского NSView. Какой CGWindowImageOption вы используете в вызове CGWindowListCreateImage? – Tuslareb