画图ii
2016-08-21 本文已影响13人
Dove_Q
override func drawRect(rect: CGRect) {
drawGrid()
//1.
let context = UIGraphicsGetCurrentContext()
//2.绘制矩形
CGContextAddRect(context, CGRect(x: 100, y: 100, width: 100, height: 200))
CGContextAddRect(context, CGRect(x: 150, y: 200, width: 100, height: 200))
//绘制椭圆
CGContextAddEllipseInRect(context, CGRect(x: 0, y: 0, width: 100, height: 200))
CGContextAddEllipseInRect(context, CGRect(x: 200, y: 200, width: 100, height: 100))
//绘制圆弧
CGContextAddArc(context, 100, 100, 100, 0, CGFloat(M_PI_2), 1)
//注意当前点的存在
CGContextAddArcToPoint(context, 300, 200, 300, 400, 100)
//贝兹曲线(贝塞尔曲线)
//二次贝兹曲线: 第一个坐标为控制点,第二个坐标为终止点
CGContextAddQuadCurveToPoint(context, 50, 0, 400, 300)
CGContextMoveToPoint(context, 0, 300)
//三次贝兹曲线: 第一个坐标为第一控制点,第二个坐标为第二控制点,第三个坐标为终止点
CGContextAddCurveToPoint(context, 50, 100, 250, 200, 300, 300)
//
CGContextSetStrokeColor(context, [1, 0, 0, 1])
//只绘制边框
// CGContextStrokePath(context)
//只填充
// CGContextFillPath(context)
//
CGContextSetFillColor(context, [1, 1, 0, 1])
//非零环绕数
//Even-Odd
CGContextDrawPath(context, .EOFillStroke)
}
//画坐标轴
func drawGrid() {
//1. 获取上下文
let context = UIGraphicsGetCurrentContext()
var y: CGFloat = 50
while y < self.bounds.size.height {
//2. 开始,设置绘制起点
CGContextMoveToPoint(context, 0, y)
//3. 往上下文上添加图形
CGContextAddLineToPoint(context, self.bounds.size.width, y)
y += 50
}
var x: CGFloat = 50
while x < self.bounds.size.width {
//2. 开始,设置绘制起点
CGContextMoveToPoint(context, x, 0)
//3. 往上下文上添加图形
CGContextAddLineToPoint(context, x, self.bounds.size.height)
x += 50
}
//保存当前的上下文状态
CGContextSaveGState(context)
//4. 设置颜色、样式、尺寸
CGContextSetLineWidth(context, 1)
CGContextSetLineDash(context, 0, [4, 10], 2)
// CGContextSetLineCap(context, .Round)
// CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor)
CGContextSetStrokeColor(context, [0, 1, 0, 1])
//5. 绘制
CGContextStrokePath(context)
//恢复到上次保存时的状态
CGContextRestoreGState(context)
}