[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)

大家都在看

  • 设计模式——行为型设计模式

    行为型设计模式 针对对象之间的交互 解释器模式 java中用的很。JVM编译的时候就是对我们写的代码进行了解释操作;数据库SQL语句亦是如此 解释器:对语言进行解释,根据不同语义来…

    技术杂谈 2023年7月11日
    055
  • python异常处理

    关于异常 在程序运行中,总会遇到各种各样的错误,如打开一个不存在的文件,程序期待用户输入数字,但用户输入了字符串,网络传输终止等,如果不对这些可能引发异常的情况进行处理,就会导致抛…

    技术杂谈 2023年7月11日
    053
  • c#处理空白字符

    空白字符是指在屏幕不会显示出来的字符(如空格,制表符tab,回车换行等)。空格、制表符、换行符、回车、换页垂直制表符和换行符称为 “空白字符”,因为它们为与…

    技术杂谈 2023年5月30日
    072
  • urandom和random区别

    linux中提供了 /dev/urandom 和 /dev/random 两个特殊设备来提供随机数。那么这两个文件有什么区别呢?要回答这个问题,先需要了解熵这个概念。 熵linux…

    技术杂谈 2023年7月24日
    061
  • springboot整合swagger3.0配置集UI界面优化

    添加pom依赖 //swagger 界面优化依赖…

    技术杂谈 2023年7月25日
    057
  • []产品和成本效率总结提炼

    [原创]产品和成本效率总结提炼 1、个人的成本和效率: 对外(你的产品帮用户降低成本,提升效率)和对内(你的方法有没有更好的方案,如:天猫精灵,解决了必须要用手机控制设备) 2、组…

    技术杂谈 2023年5月30日
    090
  • 为什么想做一件事,又如何坚持

    做一件事的动机是什么? 这个问题我想到最后,发现是”恐惧”。 想要 A,换个说法就是:害怕得不到 A;想成为 A,换个说法就是:害怕成不了 A。如果这两个公…

    技术杂谈 2023年7月11日
    051
  • c# datagridview单元格在编辑时触发事件,获取输入值(输入每个字符时触发)

    datagridview在设计时,需要在单元格编辑时触发相关事件获取数据 转 : https://www.cnblogs.com/erph/p/13563595.html Orig…

    技术杂谈 2023年5月31日
    092
  • UnixBench算分介绍【转】

    关于如何用UnixBench,介绍文章很多,这里就不展开了。这里重点描述下它是如何算分的。 碰到很多客户,装好后,直接./Run,就把结果跑出来了,然后还只取最后一个分值,比谁高谁…

    技术杂谈 2023年5月31日
    089
  • [转]快速搭建简单的LBS程序——地图服务

    很多时候,我们的程序需要提供需要搭建基于位置的服务(LBS),本文这里简单的介绍一下其涉及的一些基本知识。 墨卡托投影 地图本身是一个三维图像,但在电脑上展示时,往往需要将其转换为…

    技术杂谈 2023年6月1日
    078
  • SpringBoot-Test测试

    @RunWith(SpringRunner.class) @SpringBootTest(classes = com.aa.Application.class, webEnviro…

    技术杂谈 2023年6月21日
    078
  • shopify主题模板速度优化

    前两天一位新客户说他的shopify店铺加载速度很慢,首页完全加载需要 5~6 秒甚至更高,问ytkah有没办法帮忙优化一下。shopify网站速度优化要看具体用了什么模板,有什么…

    技术杂谈 2023年5月31日
    080
  • Python Flask Blueprint 蓝图

    Python Flask Blueprint 蓝图 本篇来了解一下 Flask 中 Blueprint 蓝图,什么蓝图 。。就是一个分模块的扩展而已,用来让不同的 业务模块api …

    技术杂谈 2023年7月11日
    064
  • 用于排队叫号系统的redis工具类

    分析 排队叫号系统的队列数据变化很频繁,因此可以考虑使用redis的list结构存储某一队列的数据,与前端采用websocekt连接,后端主动推送数据给前端,避免频繁轮询造成资源浪…

    技术杂谈 2023年7月23日
    055
  • Maven配置私有仓库

    前言 当公司或个人具有自己独有的jar时,不想公开,一般就会放在自己的私有Maven仓库中,在项目中需要引用,此时就需要将公司私有仓库配置到maven当中,一般我们的maven配置…

    技术杂谈 2023年6月21日
    081
  • 对 Visual Studio 中的Resharper禁用对某种文件的检测

    原因:在Visual Studio中安装Reshaper后,就会对各种文件进行代码检测,但是因为Reshaper更新的速度不是很及时,所以有时会对Visual Studio中某些新…

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