返回顶部
首页 > 资讯 > 移动开发 >iOS开发CGContextRef画图使用总结
  • 844
分享到

iOS开发CGContextRef画图使用总结

2024-04-02 19:04:59 844人浏览 安东尼
摘要

本文实例为大家汇总了iOS开发CGContextRef画图使用,供大家参考,具体内容如下 1.创建画布 CGContextRef ctx = UIGraphicsGetCurrent

本文实例为大家汇总了iOS开发CGContextRef画图使用,供大家参考,具体内容如下

1.创建画布

CGContextRef ctx = UIGraphicsGetCurrentContext();

2.设置属性

//旋转,注意:设置操作必须要在添加图形之前,如果设置在添加图形之后的话,此时它已经画完了,无效
//旋转的时候,是整个layer都旋转了
//旋转45度
CGContextRotateCTM(ctx, M_PI_4);
//缩放:x方向缩放0.5倍,y方向缩放1.5倍
CGContextScaleCTM(ctx, 0.5, 1.5);
//平移:x方向移动50,y方向移动100
CGContextTranslateCTM(ctx, 50, 100);
CGContextSetLineJoin(ctx, kCGLineJoinRound);
//线条宽度
CGContextSetLineWidth(ctx, 1.0);
//起点和终点圆角
CGContextSetLineCap(ctx, kCGLineCapRound);
//转角圆角
CGContextSetLineJoin(ctx, kCGLineJoinRound);
//透明度
CGContextSetAlpha(ctx, 0.5)

3.画直线

//起点
CGContextMoveToPoint(ctx, 10.0, 100.0);
//终点
CGContextAddLineToPoint(ctx, self.frame.size.width-20.0, 100.0);
//颜色 两种设置颜色的方式都可以
//CGContextSetRGBStrokeColor(ctx, 0, 1.0, 0, 1.0);
[[UIColor redColor] set];
//渲染,直线只能绘制空心的,不能调用CGContextFillPath(ctx)
// 或者使用这个方法:CGContextDrawPath(ctx, kCGPathStroke);
CGContextStrokePath(ctx);

或者使用下面方法画直线

CGPoint point[2];//坐标点  
point[0] = CGPointMake(10.0, 100.0);//起点  
point[1] = CGPointMake(self.frame.size.width-20.0, 100.0);//终点   
//points[]坐标数组,和count大小  
CGContextAddLines(context, aPoints, 2);//添加线  
CGContextDrawPath(context, kCGPathStroke);

4.画虚线

//设置虚线颜色
CGContextSetStrokeColorWithColor(ctx, [UIColor redColor].CGColor);
//设置虚线绘制起点
CGContextMoveToPoint(ctx, 10.0, 50.0);
//设置虚线绘制终点
CGContextAddLineToPoint(ctx, self.frame.size.width-20.0, 50.0);
//设置虚线排列的宽度间隔:下面的arr中的数字表示先绘制3个点再绘制1个点
CGFloat arr[] = {3, 2};
//下面最后一个参数“2”代表排列的个数。
CGContextSetLineDash(ctx, 0, arr, 2);
CGContextDrawPath(ctx, kCGPathStroke);

5.画三角形

//起点
CGContextMoveToPoint(ctx, self.center.x, 200.0);
//拐点1
CGContextAddLineToPoint(ctx, self.center.x-50.0, 250.0);
//终点
CGContextAddLineToPoint(ctx, self.center.x+50.0, 250.0);
//颜色 两种设置颜色的方式都可以
//CGContextSetRGBStrokeColor(ctx, 0, 1.0, 0, 1.0);
[[UIColor redColor] set];
//合并三角形
CGContextClosePath(ctx);
CGContextFillPath(ctx);

6.画矩形

CGRect rectangle = CGRectMake(10.0, 300.0, self.frame.size.width-20.0, 60.0);
CGContextAddRect(ctx, rectangle);
CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor);
CGContextFillPath(ctx);

7.画圆


CGContextAddArc(ctx, self.center.x, 100.0, 75.0, 0.0, M_PI+0.5, 0);
CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor);
CGContextFillPath(ctx);

8.画椭圆

CGContextAddEllipseInRect(ctx, CGRectMake(x, y, 100.0, 60.0));
CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor);
CGContextFillPath(ctx);

9.画扇形

CGContextMoveToPoint(ctx, x, y);
CGContextAddArc(ctx, x, y, 75.0, 0.0, M_PI+0.5, 0);
CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor);
CGContextSetStrokeColorWithColor(ctx, [UIColor blueColor].CGColor);
CGContextDrawPath(ctx, kCGPathFillStroke);

10.画二次贝塞尔曲线

CGContextMoveToPoint(context, 120, 300);//设置Path的起点  
CGContextAddQuadCurveToPoint(context,190, 310, 120, 390);//设置贝塞尔曲线的控制点坐标和终点坐标  
CGContextStrokePath(context);

11.画三次贝塞尔曲线

CGContextMoveToPoint(context, 200, 300);//设置Path的起点  
CGContextAddCurveToPoint(context,250, 280, 250, 400, 280, 300);//设置贝塞尔曲线的控制点坐标和控制点坐标终点坐标  
CGContextStrokePath(context);

12.画文字

// 设置文字的属性
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[NSForegroundColorAttributeName] = [UIColor whiteColor];
dict[NSFontAttributeName] = [UIFont systemFontOfSize:14];
[@"I Love iOS" drawInRect:rect withAttributes:dict];

13.画图片

UIImage *image = [UIImage imageNamed:@"apple.jpg"];  
[image drawInRect:CGRectMake(60, 340, 20, 20)];//在坐标中画出图片  
//[image drawAtPoint:CGPointMake(100, 340)];//保持图片大小在point点开始画图片,可以把注释去掉看看  
CGContextDrawImage(context, CGRectMake(100, 340, 20, 20), image.CGImage);//使用这个使图片上下颠倒了      
//CGContextDrawTiledImage(context, CGRectMake(0, 0, 20, 20), image.CGImage);//平铺图 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: iOS开发CGContextRef画图使用总结

本文链接: https://lsjlt.com/news/147461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • iOS开发CGContextRef画图使用总结
    本文实例为大家汇总了iOS开发CGContextRef画图使用,供大家参考,具体内容如下 1.创建画布 CGContextRef ctx = UIGraphicsGetCurrent...
    99+
    2024-04-02
  • iOS开发CGContextRef画图怎么使用
    这篇“iOS开发CGContextRef画图怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“iOS开发CGContex...
    99+
    2023-06-30
  • Android开发笔记 Handler使用总结
    一、Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) ,...
    99+
    2022-06-06
    android开发 handler Android
  • iOS开发中多线程的安全隐患总结
    资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象、同一个变量、同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安...
    99+
    2022-05-27
    iOS 多线程 安全隐患
  • iOS开发避免安全隐患的要点总结
    现在很多iOS的APP没有做任何的安全防范措施,导致存在很多安全隐患和事故,今天我们来聊聊iOS开发人员平时怎么做才更安全。 一、网络方面 用抓包工具可以抓取手机通信接口的数据。以C...
    99+
    2022-05-22
    iOS 开发 安全隐患
  • Android程序开发之WebView使用总结
    前言: 今天修改项目中一个有关WebView使用的bug,激起了我总结WebView的动机,今天抽空做个总结。 使用场景: 1.)添加权限 <uses-perm...
    99+
    2022-06-06
    webview Android
  • Python在画图时使用特殊符号的方法总结
    目录一、问题背景二、注意事项三、常见特殊符号及对应代码四、引入特殊符号的万能方法本文总结了python画图中使用各种特殊符号方式 一、问题背景 在论文中,如何使用特殊符号进行表示?这...
    99+
    2024-04-02
  • Python画图常用代码总结,这20个画图代码现拿现用
    目录 前言 1、散点图 2、带边界的气泡图 3、带线性回归最佳拟合线的散点图 4、抖动图 5、计数图 6、边缘直方图 7、边缘箱形图 9、矩阵图 10、发散型条形图 11、发散型文本 12、发散型包点图 13、带标记的发散型棒棒糖图...
    99+
    2023-09-01
    python 开发语言 数据分析
  • MySQL开发规范与使用技巧总结
    命名规范 1.库名、表名、字段名必须使用小写字母,并采用下划线分割。 a)MySQL有配置参数lower_case_table_names,不可动态更改,Linux系统默认为 0,即库表名以实际情况存储,大小写敏感。如果是1,以小写存储,大...
    99+
    2018-02-06
    MySQL开发规范与使用技巧总结
  • Android 开发调试工具的使用总结
     Android 调试工具,这里做一个总结整理。 DDMS --  Dalvik debug monitor service    调试监控服务 对模拟器进行相关配置。 ADB...
    99+
    2022-06-06
    调试 工具 Android
  • iOS中WKWebView的一些特殊使用总结
    前言 现在大部分的app只支持iOS8以上的系统了,在接入H5时可以只管最新的WKWebView了。 WKWebView的优势 性能高,稳定性好,占用的内存比较小, 支持...
    99+
    2022-05-23
    ios wkwebview 特殊
  • Android开发中Intent用法总结
    本文实例讲述了Android开发中Intent用法。分享给大家供大家参考,具体如下: Android手机软件开发中,Intent作为手机软件开发时很重要的对象需要引起我们的重视...
    99+
    2022-06-06
    intent android开发 Android
  • 2020年面向iOS开发人员的知识点总结(更新中)
    前言:最近在整理自己的技术栈,收集了一些自己认为比较重要的知识点分享给大家。Runloop iOS中触摸事件传递和响应原理 为什么只有主线程的runloop是开启的 为什么只在主线程刷新UI PerformSelector和run...
    99+
    2023-06-04
  • iOS开发中AvaudioPlayer怎么使用
    在iOS开发中,你可以使用AVAudioPlayer类来播放音频文件。下面是使用AVAudioPlayer的基本步骤:1. 导入AV...
    99+
    2023-09-13
    iOS
  • iOS开发中rangeOfString怎么使用
    rangeOfString是一个NSString类的方法,用于在字符串中查找指定的子字符串。它返回一个NSRange结构体,指示子字...
    99+
    2023-09-15
    iOS
  • iOS开发中nstimeinterval怎么使用
    NSTimeInterval是一个双精度浮点型的时间间隔,它表示自2001年1月1日午夜(GMT)以来的秒数。在iOS开发中,我们可...
    99+
    2023-08-24
    nstimeinterval
  • kafka connector 使用总结以及自定义connector开发
    Kafaka connect 是一种用于在Kafka和其他系统之间可扩展的、可靠的流式传输数据的工具。它使得能够快速定义将大量数据集合移入和移出Kafka的连接器变得简单。Kafka Connect可以从数据库或应用程序服务器收集数据到Ka...
    99+
    2018-02-07
    kafka connector 使用总结以及自定义connector开发
  • iOS开发中UITabBarController的使用示例
    首先我们看一下它的view层级图: - (BOOL)application:(UIApplication *)application didFinishLaunchingWith...
    99+
    2022-05-22
    iOS
  • IOS开发Objective-C Runtime如何使用
    这篇文章主要介绍“IOS开发Objective-C Runtime如何使用”,在日常操作中,相信很多人在IOS开发Objective-C Runtime如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2023-07-05
  • oracle 开发中用到的函数总结
    1.decode含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)该函数的含义如下:IF 条件=值1 THEN    RETURN(翻译值1)ELSIF 条件=值2...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作