2
mac用の拡大鏡のようなアプリケーションを開発しています。私の目標は、ズームイン時に個々のピクセルを特定できるようにすることです、私は(イベントに:NSEvent):のmouseMovedでこのコードを使用しています。ズーム時に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いくつかのサンプルコードで私の答えを更新しました。基本的には、カスタムNSViewのdrawRectメソッドのCGWindowListCreateImage呼び出しから取得したCGImageを描画します。どのCGWindowImageOptionをCGWindowListCreateImageコールで使用しますか? – Tuslareb