[ios]CGContext 函数说明

CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文
 CGContextMoveToPoint 开始画线
 CGContextAddLineToPoint 画直线

 CGContextAddEllipseInRect 画一椭圆
 CGContextSetLineCap 设置线条终点形状
 CGContextSetLineDash 画虚线
 CGContextAddRect 画一方框
 CGContextStrokeRect 指定矩形
 CGContextStrokeRectWithWidth 指定矩形线宽度
 CGContextStrokeLineSegments 一些直线

 CGContextAddArc 画已曲线 前俩店为中心 中间俩店为起始弧度 最后一数据为0则顺时针画 1则逆时针
 CGContextAddArcToPoint(context,0,0, 2, 9, 40);//先画俩条线从point 到 弟1点 , 从弟1点到弟2点的线  切割里面的圆

CGContextSetShadowWithColor 设置阴影
 CGContextSetRGBFillColor 这只填充颜色
 CGContextSetRGBStrokeColor 画笔颜色设置
 CGContextSetFillColorSpace 颜色空间填充
 CGConextSetStrokeColorSpace 颜色空间画笔设置
 CGContextFillRect 补充当前填充颜色的rect
 CGContextSetAlaha 透明度

 CGContextTranslateCTM 改变画布位置
 CGContextSetLineWidth 设置线的宽度
 CGContextAddRects 画多个线
 CGContextAddQuadCurveToPoint 画曲线
 CGContextStrokePath 开始绘制图片
 CGContextDrawPath 设置绘制模式
 CGContextClosePath 封闭当前线路
 CGContextTranslateCTM(context, 0, rect.size.height);    CGContextScaleCTM(context, 1.0, -1.0);反转画布
 CGContextSetInterpolationQuality 背景内置颜色质量等级
 CGImageCreateWithImageInRect 从原图片中取小图

//字符串的 写入可用  nsstring本身的画图方法
 -(CGSize)drawInRect:(CGRect)rect
            withFont:(UIFont *)font
       lineBreakMode:(UILineBreakMode)lineBreakMode
           alignment:(UITextAlignment)alignment;来写进去即可

//对图片放大缩小的功能就是慢了点
 UIGraphicsBeginImageContext(newSize);
 UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();

 CGColorGetComponents() 返回颜色的各个直 以及透明度 可用只读const float 来接收  是个数组

//画图片
 CGImageRef image=CGImageRetain(img.CGImage);
 CGContextDrawImage(context, CGRectMake(10.0, height - 100.0, 90.0, 90.0), image);

//实现逐变颜色填充方法 CGContextClip(context);
 CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
 CGFloat colors[] =
    {
        204.0 / 255.0, 224.0 / 255.0, 244.0 / 255.0, 1.00,
        29.0 / 255.0, 156.0 / 255.0, 215.0 / 255.0, 1.00,
        0.0 / 255.0,  50.0 / 255.0, 126.0 / 255.0, 1.00,
    };
 CGGradientRef gradient = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4));
 CGColorSpaceRelease(rgb);
 CGContextDrawLinearGradient(context, gradient,CGPointMake(0.0,0.0) ,CGPointMake(0.0,self.frame.size.height),
    kCGGradientDrawsBeforeStartLocation);

//注:  画完图后,必须
    先用CGContextStrokePath来描线,即形状
    后用CGContextFillPath来填充形状内的颜色.

//填充一个路径的时候,路径里面的子路径都是独立填充的。
//假如是重叠的路径,决定一个点是否被填充,有两种规则
 1,nonzero winding number rule:非零绕数规则,假如一个点被从左到右跨过,计数器+1,从右到左跨过,计数器-1,最后,如果结果是0,那么不填充,如果是非零,那么填充。
 2,even-odd rule: 奇偶规则,假如一个点被跨过,那么+1,最后是奇数,那么要被填充,偶数则不填充,和方向没有关系。

 CGContextEOFillPath //使用奇偶规则填充当前路径
 CGContextFillPath //使用非零绕数规则填充当前路径
 CGContextFillRect //填充指定的矩形
 CGContextFillRects //填充指定的一些矩形
 CGContextFillEllipseInRect //填充指定矩形中的椭圆
 CGContextDrawPath //两个参数决定填充规则,kCGPathFill表示用非零绕数规则,kCGPathEOFill表示用奇偶规则,kCGPathFillStroke表示填充,kCGPathEOFillStroke表示描线,不是填充

//设置当一个颜色覆盖上另外一个颜色,两个颜色怎么混合
//默认方式是
 result = (alpha * foreground) + (1 - alpha) * background

 CGContextSetBlendMode :设置blend mode.

 CGContextSaveGState :保存blend mode.

 CGContextRestoreGState:在没有保存之前,用这个函数还原blend mode.

 CGContextSetBlendMode 混合俩种颜色
————————————————
版权声明:本文为CSDN博主「小魏的马仔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuexiiphone/article/details/51252734

Original: https://www.cnblogs.com/Free-Thinker/p/16544675.html
Author: brave-sailor
Title: [ios]CGContext 函数说明

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/545363/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 微服务组件—-SpringCloudAlibaba链路追踪skywalking详解

    skywalking是什么 【1】skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWa…

    技术杂谈 2023年7月23日
    065
  • yum安装Mysql8.0

    停止MySQL service mysqld status service mysqld stop 卸载已经安装过的MySQL 检查是否已经安装 rpm -qa|grep mysq…

    技术杂谈 2023年6月21日
    0114
  • docker学习:docker镜像

    镜像是什么 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。 Uni…

    技术杂谈 2023年7月10日
    0100
  • 3D Math Keynote 3

    【 3D Math Keynote 3】 1、球的表面积 Surface、球的体积 Volumn: 2、当物体旋转后,如果通过变换后的旧AABB来顶点来计算新的AABB顶点,则生成…

    技术杂谈 2023年5月31日
    092
  • 8086汇编 寻址方式

    8086汇编 寻址方式 不同的寻址方式的灵活应用 posted @2020-03-12 13:06 kevin.Xiang 阅读(398 ) 评论() 编辑 Original: h…

    技术杂谈 2023年6月1日
    093
  • JAVA的变量与常量

    ; ; 实践是唯一的真理。 变量 变量的定义 变量就是可以变化的量。 JAVA变量是程序中最基础的程序单元,其要素包括变量名,变量类型及作用域。 写程序要注意程序的可读性 如图所示…

    技术杂谈 2023年6月21日
    0115
  • SpringBoot-Mybatis

    SpringBoot 整合 Mybatis SpringBoot-Mybatis 10.1 导入 MyBatis 所需要的依赖 org.mybatis.spring.boot my…

    技术杂谈 2023年6月21日
    071
  • 「Elasticsearch」ES重建索引怎么才能做到数据无缝迁移呢?

    背景 众所周知,Elasticsearch是⼀个实时的分布式搜索引擎,为⽤户提供搜索服务。当我们决定存储某种数据,在创建索引的时候就需要将数据结构,即Mapping确定下来,于此同…

    技术杂谈 2023年7月24日
    061
  • 3、Swift协程详解:调用协程

    我们现在已经知道怎么定义异步函数了,也可以很轻松的转换将现有的异步回调 API 转成异步函数。那下一个问题就是,既然普通函数不能调用异步函数,那定义好的这些异步函数该从哪儿开始调用…

    技术杂谈 2023年6月1日
    086
  • 了解HTML/CSS/JS/JQuery/ajax等前端知识

    什么是HTML 超文本标记语言 浏览器通过识别相应的标签来加载页面 通过HTTP协议传输,不是编程语言 HTML常用标签 title script style link meta …

    技术杂谈 2023年7月23日
    079
  • Jenkins构建vue项目自动部署到远程服务器

    1.环境要求 以下服务器的操作系统均为Centos7 服务器A:Gitlab 服务器B:Jenkins 服务器C:Nginx,即你的vue项目部署服务器。 gitlab、Jenki…

    技术杂谈 2023年7月11日
    061
  • maven的安装和仓库的种类和彼此关系

    ; ; Maven软件的下载 为了使用Maven管理工具,哦我们首先要到官网去下载他的安装软件,通过百度搜索Mav嗯如下: 点击Download连接,就可以直接进入到Maven软件…

    技术杂谈 2023年6月21日
    0103
  • Hive动态分区

    场景 订单数据之类的业务表,因为有状态要更新,比如订单状态,物流状态之类的,需要同步很久之前的数据到Hive. 如何同步时在Hive中进行操作一次更新多个分区内的数据? Hive …

    技术杂谈 2023年7月11日
    083
  • WSL VS Code Server for WSL closed unexpectedly

    直接在管理员PowerShell中WSL –shutdown 本博客是个人工作中记录,遇到问题可以互相探讨,没有遇到的问题可能没有时间去特意研究,勿扰。另外建了几个QQ…

    技术杂谈 2023年6月1日
    098
  • 自定义UIPickView

    效果图 源码 https://github.com/YouXianMing/Animations ; 说明 1. 数据适配器PickerViewDataAdapter含有Picke…

    技术杂谈 2023年6月1日
    075
  • wasm调试 webAssembly介绍大全

    https://segmentfault.com/a/1190000040867861 最近在研究 WebAssembly,也写了几篇全面介绍的文章: 本文是学习 WebAssem…

    技术杂谈 2023年5月31日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球