・2016/12/26
Xcode SWIFTで Mac OSX用のスクリーン拡大鏡アプリを作る
(Mac OS X用アプリを Swift言語で作る方法、マウスカーソルの位置をリアルタイムで取得する方法)
Tags: [Apple], [MacBook]
● Xcode 7.3.1 Swift 2.2.1で OS X用のアプリを作る
Welcome to Swift.org
ここでは、Xcode 7.3.1 Swift 2.2.1を使用してアプリを作ります。
スクリーン拡大鏡アプリを作成します。
●必要な実装処理内容の一覧
主な実装処理
・マウスイベントをグローバルフックで引っ掛ける
・マウスカーソルの座標の位置をリアルタイムで取得
・画面の座標指定したエリアを画像として取得する
・画像を拡大表示する
// Copyright (c) 2016 FREE WING,Y.Sakamoto. All rights reserved.
import Cocoa
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
Swift.print("viewDidLoad")
// 信頼するアプリチェック
let options = NSDictionary(object: kCFBooleanTrue, forKey: kAXTrustedCheckOptionPrompt.takeUnretainedValue() as NSString) as CFDictionaryRef
let trusted = AXIsProcessTrustedWithOptions(options)
// 信頼するアプリチェック
if (trusted) {
// ・マウスイベントをグローバルフックで引っ掛ける
// マウスを動かした時のフックを設定
NSEvent.addGlobalMonitorForEventsMatchingMask(.MouseMovedMask, handler: self.handlerMouseMovedMask)
}
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
func handlerMouseMovedMask(event: NSEvent) {
//CGRectで取得
let rect = (NSScreen.mainScreen()?.frame)!
// 左下が (0, 0)
// var point = event.locationInWindow
// 左下が (0, 0)
// ・マウスカーソルの座標の位置をリアルタイムで取得
var point = NSEvent.mouseLocation()
// 座標補正計算
point.y = rect.height - point.y
// ・デバグ用にマウスカーソルの座標の位置をリアルタイムで取得して表示
Swift.print(String(format: "point %7.2lf %7.2lf", point.x, point.y))
let captureSize: Int = 12
let centerOffset = Int(captureSize / 2)
let captureRect: CGRect = CGRect(x: Int(point.x) - centerOffset, y: Int(point.y) - centerOffset, width: captureSize, height: captureSize)
// kCGWindowListOptionOnScreenOnly
let option: CGWindowListOption = CGWindowListOption.OptionOnScreenOnly
// kCGNullWindowID
let relativeToWindow: CGWindowID = (CGWindowID(0))
// kCGWindowImageBoundsIgnoreFraming
let imageOption = CGWindowImageOption.BoundsIgnoreFraming
// ・画面の座標指定したエリアを画像として取得する
let cgImage: CGImage = CGWindowListCreateImage(captureRect, option, relativeToWindow, imageOption)!
// ・画像を拡大表示する
// 画像を拡大表示する
let bitsPerComponent = CGImageGetBitsPerComponent(cgImage)
let bytesPerRow = CGImageGetBytesPerRow(cgImage)
let colorSpace = CGImageGetColorSpace(cgImage)
let bitmapInfo = CGImageGetBitmapInfo(cgImage)
let context = CGBitmapContextCreate(nil, captureSize, captureSize, bitsPerComponent, bytesPerRow, colorSpace, bitmapInfo.rawValue)
CGContextSetInterpolationQuality(context, CGInterpolationQuality.None)
let nsImage: NSImage = NSImage(CGImage: cgImage, size: CGSize(width: CGImageGetWidth(cgImage), height: CGImageGetHeight(cgImage)))
nsImage.lockFocus()
imageView.image = nsImage
nsImage.unlockFocus()
}
@IBOutlet weak var imageView: NSImageView!
}
Tags: [Apple], [MacBook]
●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)
Xcodeで Mac OSX用のクリップボード共有&履歴アプリを作る
Mac OS X用アプリを Swift言語で作る方法、MacOSXでクリップボード監視で変化が有ったら取得
Xcode SWIFTで Mac OSX用のスクリーンマスコットアプリを作る
Mac OS X用アプリを Swift言語で作る方法、デスクトップ画面に画像をオーバーレイで描画する方法
Xcode SWIFTで Mac OSX用のスクリーンキャプチャアプリ&画像保存を作る
Mac OS X用アプリを Swift言語で作る方法、デスクトップの画像をキャプチャする方法
Xcode SWIFTで Mac OSX用の Finderからドラッグ&ドロップを受け付けるアプリを作る
Mac OS X用アプリを Swift言語で作る方法、ドラッグ&ドロップを受け付ける方法
Xcodeで Mac OSX用の使えそうな処理を Tipsとしてまとめ
Mac OS X用アプリを Swift言語で作る方法
Apple MacBook Airを買ってみた。開発者必須アプリの紹介
Xcodeで iPhoneの開発の為に、Mac OS X用アプリを Swift言語で作る方法
Windowsパソコンで Macる。Skylake Platform in OSX86 Hackintoshの夢、BIOS設定内容
Windows PCで iPhone開発、Mac OS Xで Hackintoshの方法、DVMT Pre-Allocated 128MB
VirtualBoxに Mac OS X macOS Sierraをインストールの夢
Windowsの VirtualBoxに Mac環境を作り OS Xをインストールして動かす夢を見る
Raspberry Pi3で iPhoneの開発言語でお馴染みの Swiftを動かし、GPIOを操作して Lチカする方法
Raspbian Jessieで Swift言語のセットアップ方法、GPIOの LEDを Lチカや I2Cを制御する方法
[HOME]
|
[BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c)
2016 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/xcode/xcode_swift_4_screen_magnify/