您的位置:首页 > 其它

2. Quartz2D 绘制直线

2015-02-17 11:10 120 查看
#import <UIKit/UIKit.h>

@interface MyView : UIView

@end


#import "MyView.h"

@implementation MyView

-(void) drawRect:(CGRect)rect{
//1.取出上下文 --当前绘图的位置(设备)
CGContextRef context = UIGraphicsGetCurrentContext();

[self drawLine];
}

#pragma mark 绘制直线2,使用默认context进行绘图
-(void)drawLine2{
//1. 获取上下文
CGContextRef context = UIGraphicsGetCurrentContext();

//2. 设置路径
//1)设置起始点
CGContextMoveToPoint(context, 50, 50);
//2)增加点
CGContextAddLineToPoint(context, 200, 200);
CGContextAddLineToPoint(context, 50, 200);
//3)关闭路径
CGContextClosePath(context);

//3 设置属性
/*
UIkit 默认会导入Core Grapthics,UIKit对常用的很多CG方法做了封装
UIColor setStroke  设置变形颜色
UIColor setFill    设置填充颜色
UIColor set        设置边线和填充颜色
*/
//设置边线
//    [[UIColor redColor]setStroke];
//设置填充
//    [[UIColor blueColor]setFill];
[[UIColor greenColor]set];

//4 绘制路径
CGContextDrawPath(context, kCGPathFillStroke);
}

#pragma mark 绘制直线
-(void) drawLine{
//提示:使用Ref声明的对象,不需要用*
//1. 获取上下文 - UIView对应的上下文
CGContextRef context = UIGraphicsGetCurrentContext();
//2. 创建路径并设置路径(可变路径)
/**
注意:当我们开发动画的时候,通常需要指定对象运动的路线,然后由动画方法负责实现动画效果

因此,在动画开发中,需要熟练使用路径
*/
CGMutablePathRef path =CGPathCreateMutable();
//划线
// 1)设置起始点
CGPathMoveToPoint(path, NULL, 50, 50);
// 2)设置中间点
// 3)设置目标点
CGPathAddLineToPoint(path, NULL, 200, 200);
CGPathAddLineToPoint(path, NULL, 50, 200);

// 4) 设置封闭路径
// a) 直接指定目标点
//CGPathAddLineToPoint(path, NULL, 50, 50);
// b)使用关闭路径
CGPathCloseSubpath(path);

//3. 将路径添加到上下文
CGContextAddPath(context, path);
//4. 设置上下文属性(状态)
/**
设置线条颜色
red 0 ~ 1.0 red / 255
green 0 ~ 1.0 green / 255
blue 0 ~ 1.0 blue / 255
alpha 透明度 0 ~ 1.0
0 - 完全透明
1.0 ~ 完全不透明

提示:1)使用RGB颜色设置时,最好不要同时指定RGB和alpha,性能损耗
2) 默认线条和填充颜色都是黑色
*/
CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1.0);
CGContextSetRGBFillColor(context, 0, 1, 0, 1.0);
//设置线条宽度
CGContextSetLineWidth(context, 5.0f);
//设置线条的顶点样式
CGContextSetLineCap(context, kCGLineCapRound);
//设置线条的链接点样式
CGContextSetLineJoin(context, kCGLineJoinRound);
//设置线条虚线样式
/*
虚线参数
context:
phase:相位、虚线起始位置,通常使用0,从都开始画
lengths:长度数组
count lengths:数组个数
*/
CGFloat lengths[3] = {10,20,30};
CGContextSetLineDash(context, 0, lengths, 3);

//5. 绘制路径
/**
kCGPathStroke 画线(空心)
kCGPathFill 填充(实心)
kCGPathFillStroke 即画线又填充
*/
CGContextDrawPath(context, kCGPathFillStroke);
//6. 释放路径
CGPathRelease(path);
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: