Quartz 2D的简单使用

本文介绍如何使用Quartz2D框架在UIView上绘制自定义图形,包括线段、三角形、圆及二次曲线等基本图形的绘制方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<strong><span style="font-size:24px;">Quartz 2D的简单使用</span></strong>

使用Quartz 2D这个框架可以在uiview画出我们自己想画的图形,而不用使用系统提供的控件。但是在要实现这个效果要重写uiview的-(void)drawRect:(CGRect)rect方法;


1.绘制简单的线段

-(void)drawRect:(CGRect)rect
{
    //获取图形上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    
    //设置线条的宽度
    CGContextSetLineWidth(ctx, 10);
    //设置线条的头尾部的样式
    CGContextSetLineCap(ctx, kCGLineCapRound);
    //设置两线段之间转折点的样式
    CGContextSetLineJoin(ctx,kCGLineJoinRound);
    
    //画一条直线(两点一线),确定起点
    CGContextMoveToPoint(ctx, 100, 100);
    //添加一条线段到(100,200)
    CGContextAddLineToPoint(ctx, 100, 200);
    
    //以第一条线段的终点为起点,添加一个线段到(150,253)
    CGContextAddLineToPoint(ctx, 150, 253);
    //设置颜色(第一种通过rgb方式设置)
    CGContextSetRGBStrokeColor(ctx, 0, 0, 1, 1);
    //设置颜色(第二种 通过oc的方式设置,setStroe设置空心图形的颜色  setFill设置实心图形的
    //的颜色,set :即可设置空心颜色,也可设置实心颜色
//    [[UIColor greenColor]setStroke];
//    [[UIColor greenColor]setFill]
    [[UIColor blackColor]set];
    //渲染ctx,stroke为空心。所有的线段都为空心渲染
    CGContextStrokePath(ctx);
}


2.绘制三角形

-(void)drawRect:(CGRect)rect
{
    //获取图形上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(ctx, 10);
    
    //---------------直接在3点之间添加3条线段,形成3角形-----------
    //设置一个起点
    CGContextMoveToPoint(ctx, 10, 10);
    //从(10,10)添加一条线段到(10,100)
    CGContextAddLineToPoint(ctx, 10, 100);
    //从(10,100)添加一条线段到(100,150)
    CGContextAddLineToPoint(ctx, 100, 150);
    //从(100,150)添加一个线段到(10,10)
    CGContextAddLineToPoint(ctx, 10,10);
    [[UIColor blackColor]setFill];
    CGContextFillPath(ctx);
   //------------第二种:最后一条线段,调用封闭路径的方法(使终点和起点自动相连形成一条线段)----
    
    CGContextMoveToPoint(ctx, 200, 200);
    CGContextAddLineToPoint(ctx, 200, 250);
    CGContextAddLineToPoint(ctx, 250, 300);
    //关闭路径(连接起点和终点)
    CGContextClosePath(ctx);
    
    [[UIColor whiteColor] set];
//    CGContextStrokePath(ctx);
    //渲染实心图形
    CGContextFillPath(ctx);
}


3.绘制圆

/**
 * 画一个1/4圆
 */
- (void)drawRect:(CGRect)rect
{
    //获取图形上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //设置一个起点(和圆心一致)
    CGContextMoveToPoint(ctx, 100, 100);
    //添加一个线段到(100,150)
    CGContextAddLineToPoint(ctx, 100, 150);
    //添加一个圆弧
    CGContextAddArc(ctx, 100, 100, 50,M_PI_2,0,1);
    //关闭路径(连接起点和终点)
    CGContextClosePath(ctx);
    //设置颜色
    [[UIColor blueColor]set];
    //渲染空心图形
    CGContextStrokePath(ctx);
}

/**
 *  画一个完整的圆
 */
void drawCircle()
{
    //获取图形上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //画圆,设置圆所在的矩形框(当长宽一样时显示出来的就是一个圆,当长宽不一样时显示出来的就是一个椭圆)
    CGContextAddEllipseInRect(ctx, CGRectMake(50, 50, 100, 150));
    //设置线段的宽度,可以通过这种方式画出一个圆环
    CGContextSetLineWidth(ctx, 10);
    //渲染一个空心圆
    CGContextStrokePath(ctx);
}
void drawArc()
{
    //获取图形上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //画圆弧
    //x/y:圆心坐标点
    //startAngle:开始角度(以数学中的x,y坐标系,x的正方向为0度,x的负方向为180度,或者-180度,y的正方向为-90度,y的负方向为90度)
    //endAngle:结束角度
    //clockWise:圆弧的伸展方向(0:顺时针  1:逆时针)
    CGContextAddArc(ctx, 100, 100, 50, -M_PI_2, M_PI, 1);
    //渲染图形
    CGContextFillPath(ctx);
}


4.绘制二次曲线
画曲线,通过画贝塞尔曲线实现的。需要设置3个点,当前点,结束点和中间控制点

/**
 *  画曲线
 */
void drawZui(CGContextRef ctx, CGRect rect)
{
    // 中间的控制点
    CGFloat controlX = rect.size.width * 0.5;
    CGFloat controlY = rect.size.height * 0.4;
    
    // 当前点
    CGFloat marginX = 20;
    CGFloat marginY = 10;
    CGFloat currentX = controlX - marginX;
    CGFloat currentY = controlY - marginY;
    CGContextMoveToPoint(ctx, currentX, currentY);
    
    // 结束点
    CGFloat endX = controlX + marginX;
    CGFloat endY = currentY;
    
    // 贝塞尔曲线
    CGContextAddQuadCurveToPoint(ctx, controlX, controlY, endX, endY);
    
    // 设置颜色
    [[UIColor blackColor] set];
    
    // 渲染
    CGContextStrokePath(ctx);
}



资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值