IOS开发之UI进阶(Quartz2D图形上下文)

Quartz2D

Quartz2D是一个二维绘图引擎,同时支持IOSMac OS X系统(跨平台,纯C语言),包括在CoreGraphics框架中

  • 绘制图形、文字,生成图片
  • 读取/生成PDF
  • 截图/裁剪图片
  • 自定义UI控件

数据类型以CG作为前缀

Quartz2D的类型

  • 图形上下文CGContextRef
  • Quartz2D提供了以下几种类型的Graphics Context:
  • Bitmap Graphics Context
  • PDF Graphics Context
  • Window Graphics Context
  • Layer Graphics Context (UI控件)
  • Printer Graphics Context (打印机)
  • 主要包括这些信息:绘图路径(各种各样的图形)、绘图状态(颜色、线宽、样式、旋转、缩放、平移、图片裁剪区域等)、输出目标(输出到哪里)

UIKit框架

  • 对部分Quartz2DAPI做封装
  • 没有封装的只能调用原生的
  • 比如:画图片、文字到控件上(UIKit已经封装好了)

绘图的步骤

  • 绘制到UIView上面,新建一个继承自UIView的类
在其drawRect方法中绘制,方法1 C
- (void)drawRect:(CGRect)rect {
   
    // Drawing code
    // 1.获取当前绘图上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.把路径添加到上下文当中
    CGContextMoveToPoint(ctx,50,50); // 起点 移动笔
    CGContextAddLineToPoint(ctx,100,100); // 终点 从起点画到终点
	// 2.5可以设置线的样式 可以省略 
	CGContextSetLineWidth(ctx,10); // 线宽10
	CGContextSetLineJoin(ctx,kCGLineJoinRound); // 连接处圆弧,kCGLineJoinMiter默认,kCGLineJoinRound圆弧,kCGLineJoinBevel切角
	CGContextSetLineCap(ctx,kCGLineCapRound); // 头尾样式 kCGLineCapButt默认,kCGLineCapRound圆弧,kCGLineCapSquare加个平角(相比默认会长一点)
	CGContextSetRGBStrokeColor(ctx,0.4,0.4,0.4,1); // 设置颜色 ctx + RGB三个数值 + 透明度 
    // 3.渲染
    CGContextStrokePath(ctx);
}
方法2 C
- (void)drawRect:(CGRect)rect {
   
    // Drawing code
    // 1.获取当前绘图上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.拼接路径
    CGMutablePathRef path = CGPathCreateMutable();
    CGContextMoveToPoint(path,NULL,50,50);
    CGContextAddLineToPoint(path,NULL,100,100);
    // 3.把路径添加到上下文
  	CGContextStrokePath(ctx,path);
    // 4.渲染
    CGContextStrokePath(ctx);
}
方法3 C+OC
 - (void)drawRect:(CGRect)rect {
   
    // Drawing code
    // 1.获取当前绘图上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.拼接路径
    // OC封装
    UIBezierPath path = [[UIBezierPath alloc] init];
	[path moveToPoint
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值