HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2016/12/26

Xcode SWIFTで Mac OSX用のスクリーン拡大鏡アプリを作る 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用のクリップボード共有&履歴アプリを作る
Xcodeで Mac OSX用のクリップボード共有&履歴アプリを作る

  Mac OS X用アプリを Swift言語で作る方法、MacOSXでクリップボード監視で変化が有ったら取得

Xcode SWIFTで Mac OSX用のスクリーンマスコットアプリを作る
Xcode SWIFTで Mac OSX用のスクリーンマスコットアプリを作る

  Mac OS X用アプリを Swift言語で作る方法、デスクトップ画面に画像をオーバーレイで描画する方法

Xcode SWIFTで Mac OSX用のスクリーンキャプチャアプリ&画像保存を作る
Xcode SWIFTで Mac OSX用のスクリーンキャプチャアプリ&画像保存を作る

  Mac OS X用アプリを Swift言語で作る方法、デスクトップの画像をキャプチャする方法

Xcode SWIFTで Mac OSX用の Finderからドラッグ&ドロップを受け付けるアプリを作る
Xcode SWIFTで Mac OSX用の Finderからドラッグ&ドロップを受け付けるアプリを作る

  Mac OS X用アプリを Swift言語で作る方法、ドラッグ&ドロップを受け付ける方法

Xcodeで Mac OSX用の使えそうな処理を Tipsとしてまとめ
Xcodeで Mac OSX用の使えそうな処理を Tipsとしてまとめ

  Mac OS X用アプリを Swift言語で作る方法

Apple MacBook Airを買ってみた。開発者必須アプリの紹介
Apple MacBook Airを買ってみた。開発者必須アプリの紹介

  Xcodeで iPhoneの開発の為に、Mac OS X用アプリを Swift言語で作る方法

Windowsパソコンで Macる。Skylake Platform in OSX86 Hackintoshの夢、BIOS設定内容
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をインストールの夢
VirtualBoxに Mac OS X macOS Sierraをインストールの夢

  Windowsの VirtualBoxに Mac環境を作り OS Xをインストールして動かす夢を見る

Raspberry Pi3で iPhoneの開発言語でお馴染みの Swiftを動かし、GPIOを操作して Lチカする方法
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/