swift 3線引き-SpriteKit線引き
2163 ワード
一、Core Graphics紹介
1.Core Graphicsとは
(1)Core Graphics FrameworkはCベースのAPIフレームワークであり、Quartzを描画エンジンとして使用し、すべての描画操作に使用できる.低レベル、軽量レベル、高忠実度の2 Dレンダリングを提供する.(2)Quartz 2 DはCore Graphics Frameworkの一部であり、強力な2 D画像描画エンジンである.(3)我々が使用しているUIライブラリのUIコンポーネントは全てCoreGraphicsによって描画されている.したがってCoreGraphicsを使用することで、UIKIよりも下位の機能を実現することができる.(4)我々がUIKIフレームワークを導入すると、自動的にCoreGraphicsフレームワークを導入するとともに、UIKI内部においてもいくつかの一般的な描画APIをカプセル化して、我々の使用を便利にする.(例えば、CGMutablePathはCore Graphicsの下位APIであり、UIBezierPathはCGMutablePathのパッケージである.)
2.図面の一般手順
(1)描画コンテキストを取得する(2)作成してパスを設定する(3)コンテキストにパスを追加する(4)タッチカラー、幅、塗りつぶしカラーなどのコンテキスト状態を設定する(5)描画パス
二、直線を描く
1.Core Graphicsとは
(1)Core Graphics FrameworkはCベースのAPIフレームワークであり、Quartzを描画エンジンとして使用し、すべての描画操作に使用できる.低レベル、軽量レベル、高忠実度の2 Dレンダリングを提供する.(2)Quartz 2 DはCore Graphics Frameworkの一部であり、強力な2 D画像描画エンジンである.(3)我々が使用しているUIライブラリのUIコンポーネントは全てCoreGraphicsによって描画されている.したがってCoreGraphicsを使用することで、UIKIよりも下位の機能を実現することができる.(4)我々がUIKIフレームワークを導入すると、自動的にCoreGraphicsフレームワークを導入するとともに、UIKI内部においてもいくつかの一般的な描画APIをカプセル化して、我々の使用を便利にする.(例えば、CGMutablePathはCore Graphicsの下位APIであり、UIBezierPathはCGMutablePathのパッケージである.)
2.図面の一般手順
(1)描画コンテキストを取得する(2)作成してパスを設定する(3)コンテキストにパスを追加する(4)タッチカラー、幅、塗りつぶしカラーなどのコンテキスト状態を設定する(5)描画パス
二、直線を描く
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let frame = CGRect(x: 30, y: 30, width: 250, height: 100)
let cgView = CGView(frame: frame)
self.view.addSubview(cgView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
class CGView:UIView {
override init(frame: CGRect) {
super.init(frame: frame)
// ,
self.backgroundColor = UIColor.clear
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func draw(_ rect: CGRect) {
super.draw(rect)
//
guard let context = UIGraphicsGetCurrentContext() else {
return
}
// , 3
let drawingRect = self.bounds.insetBy(dx: 3, dy: 3)
//
let path = CGMutablePath()
path.move(to: CGPoint(x:drawingRect.minX, y:drawingRect.minY))
path.addLine(to:CGPoint(x:drawingRect.maxX, y:drawingRect.minY))
path.addLine(to:CGPoint(x:drawingRect.maxX, y:drawingRect.maxY))
//
context.addPath(path)
//
context.setStrokeColor(UIColor.orange.cgColor)
//
context.setLineWidth(6)
//
context.strokePath()
}
}