绘图

作者: 林希品 | 来源:发表于2021-11-11 09:32 被阅读0次

画三角形

#import "XPCoreGraphicLineView.h"

@implementation XPCoreGraphicLineView

#pragma mark - Override Base Function

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();  //建个内容 上下文
    //设置上下文使用的颜色
    [[UIColor yellowColor] set]; 
    CGContextSetLineWidth(context, 4.0);  //设置横线宽度
    CGContextSetShadowWithColor(context, CGSizeMake(10.0f, 10.0f), 20.0f, [UIColor redColor].CGColor); 设置线阴影的颜色
    CGContextSetLineCap(context, kCGLineCapRound);  //设置线条起点和终点的样式为圆角
    CGContextMoveToPoint(context, 50.0, 200.0); //点
    CGContextAddLineToPoint(context, 50.0, 400.0); //添加点
    CGContextAddLineToPoint(context, 250.0, 400.0);//第三点
    CGContextClosePath(context); //闭环 关闭起点和终点
    //开始绘制
    CGContextStrokePath(context);
}

@end

画四边形

#import "XPrect.h"

@implementation XPrect


- (void)drawRect:(CGRect)rect
{

    //1.获取图形上下文
    CGContextRef ctx=UIGraphicsGetCurrentContext();
    //2.画四边形
    CGContextAddRect(ctx, CGRectMake(20, 20, 150, 100));

    // 如果要设置绘图的状态必须在渲染之前
    //    CGContextSetRGBStrokeColor(ctx, 1.0, 0, 0, 1.0);
    // 绘制什么类型的图形(空心或者实心).就要通过什么类型的方法设置状态
    //    CGContextSetRGBFillColor(ctx, 1.0, 0, 0, 1.0);

    // 调用OC的方法设置绘图的颜色
    //    [[UIColor purpleColor] setFill];
    //    [[UIColor blueColor] setStroke];
    // 调用OC的方法设置绘图颜色(同时设置了实心和空心)
    //    [[UIColor greenColor] set];
    [[UIColor colorWithRed:1.0 green:0 blue:0 alpha:1.0] set];


    //3.渲染图形到layer上
    //空心的
    CGContextStrokePath(ctx);
    //实心的
//    CGContextFillPath(ctx);

}


@end

画圆

代码1
- (void)drawRect:(CGRect)rect
{

    // 1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 画圆
    CGContextAddArc(ctx, 100, 100, 50, 0, 2 * M_PI, 0);

    // 3.渲染 (注意, 画线只能通过空心来画)
//    CGContextFillPath(ctx);
    CGContextStrokePath(ctx);
    
}
代码2
// 画圆
    // 1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.画圆
    CGContextAddEllipseInRect(ctx, CGRectMake(50, 100, 50, 50));
    
    [[UIColor greenColor] set];
    
    // 3.渲染
    //    CGContextStrokePath(ctx);
    CGContextFillPath(ctx);

画椭圆

// 画椭圆
    // 1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.画圆
    CGContextAddEllipseInRect(ctx, CGRectMake(50, 100, 100, 230));
    
    [[UIColor purpleColor] set];
    
    // 3.渲染
    //    CGContextStrokePath(ctx);
    CGContextFillPath(ctx);
image.png

画圆弧

代码1
// 画圆弧
    // 1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.画圆弧
    // x/y 圆心
    // radius 半径
    // startAngle 开始的弧度
    // endAngle 结束的弧度
    // clockwise 画圆弧的方向 (0 顺时针, 1 逆时针)
    //    CGContextAddArc(ctx, 100, 100, 50, -M_PI_2, M_PI_2, 0);
    CGContextAddArc(ctx, 100, 100, 50, M_PI_2, M_PI, 0);
    CGContextClosePath(ctx);
    
    // 3.渲染
    //     CGContextStrokePath(ctx);
    CGContextFillPath(ctx);
image.png
代码2
// 1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.画饼状图
    // 画线
    CGContextMoveToPoint(ctx, 100, 100);
    CGContextAddLineToPoint(ctx, 100, 150);
    // 画圆弧
    CGContextAddArc(ctx, 100, 100, 50, M_PI_2, M_PI, 0);
    //    CGContextAddArc(ctx, 100, 100, 50, -M_PI, M_PI_2, 1);
    
    // 关闭路径
    CGContextClosePath(ctx);
    [[UIColor brownColor]set];
    
    
    // 3.渲染 (注意, 画线只能通过空心来画)
    CGContextFillPath(ctx);
    //    CGContextStrokePath(ctx);
image.png

画一个四边形

通过设置两个端点(长和宽)来完成一个四边形的绘制。

- (void)drawRect:(CGRect)rect
{
    //画四边形
    //获取图形上下文
    CGContextRef ctx=UIGraphicsGetCurrentContext();
    //绘图
    CGContextAddRect(ctx, CGRectMake(20, 50, 100, 100));
    //渲染
    CGContextStrokePath(ctx);
}

画一个歪的四边形

如何画一个歪的矩形?(通过矩阵操作来完成,和形变操作相似)
可以通过矩阵操作,把画出来的东西进行形变(旋转,缩放,平移)
方法:CGContextRotateCTM(<#CGContextRef c#>, <#CGFloat angle#>)该接受两个参数(图形上下文,弧度)
注意点:设置矩阵操作必须要在添加图形之前,如果设置在添加图形之后的话,此时它已经画完了,无效。

注意:旋转的时候是整个layer都旋转了
- (void)drawRect:(CGRect)rect
{
    //画四边形
    //获取图形上下文
    CGContextRef ctx=UIGraphicsGetCurrentContext();
    //矩阵操作
    //注意点:设置矩阵操作必须要在添加绘图信息之前
    //旋转45度
    CGContextRotateCTM(ctx, M_PI_4);

    //绘图
    CGContextAddRect(ctx, CGRectMake(150, 100, 100, 100));
    //渲染
    CGContextStrokePath(ctx);
}
- (void)drawRect:(CGRect)rect
{
    //获取图形上下文
    CGContextRef ctx=UIGraphicsGetCurrentContext();
    //矩阵操作
    //注意点:设置矩阵操作必须要在添加绘图信息之前
    //旋转45度
    //CGContextRotateCTM(ctx, M_PI_4);

    //绘图
    //画四边形
    CGContextAddRect(ctx, CGRectMake(150, 100, 100, 100));
    //画一个圆
    CGContextAddEllipseInRect(ctx, CGRectMake(200, 200, 50, 50));
    //渲染
    CGContextStrokePath(ctx);
}
image.png
- (void)drawRect:(CGRect)rect
{
    //获取图形上下文
    CGContextRef ctx=UIGraphicsGetCurrentContext();
    //矩阵操作
    //注意点:设置矩阵操作必须要在添加绘图信息之前

    #//操作方法
    //平移,x方向移动50,y方向移动100
    CGContextTranslateCTM(ctx, 50, 100);
    //缩放,x方向缩放0.5倍,y方向缩放1.5倍
    CGContextScaleCTM(ctx, 0.5, 1.5);
    ##########

    //绘图
    //画四边形
    CGContextAddRect(ctx, CGRectMake(150, 100, 100, 100));
    //画一个圆
    CGContextAddEllipseInRect(ctx, CGRectMake(200, 200, 50, 50));
    //渲染
    CGContextStrokePath(ctx);
}

相关文章

  • MATLAB 绘图(二)

    概述 本次的内容涉及到除了线图以外的绘图,包括离散绘图、极坐标绘图、曲面绘图和统计绘图。 离散绘图:茎干图、阶梯图...

  • R|绘图-学习笔记(二)

    tags: 绘图 R的三大绘图系统 1. 基本绘图系统 (base plotting system) 绘图始于空白...

  • Plotly 绘图神器使用说明

    在线绘图 离线绘图

  • 二维数据、三维数据的绘制

    数据:房价预测绘图方式:二维 绘图库:seaborn 绘图方式:三维 绘图库:matplotlib

  • Python动态绘图

    Python数据分析经常需要用到交互式动态绘图!Python的绘图方式包括“控制台绘图”和“弹出窗绘图”,动态绘图...

  • R基础绘图

    逐步绘图 R内置的基本绘图包graohics绘图逻辑:打开一个绘图板,制定绘图区,逐步添加各种图形元素。以下为例:...

  • iOS绘图详解(链接)

    iOS绘图详解iOS绘图教程

  • python 海龟作图

    turtle绘图 turtle绘图是python中引入的一个简单绘图工具,利用turtle模块绘图又被称为海龟作图...

  • iOS 绘图

    转自:iOS绘图—— UIBezierPath 和 Core Graphics绘图进阶请参考:绘图 前言 iOS系...

  • Android绘图之PathMeasure(16)

    Android 绘图学习 android绘图之Paint(1)android绘图之Canvas基础(2)Andro...

网友评论

      本文标题:绘图

      本文链接:https://www.haomeiwen.com/subject/asybzltx.html