Quartz2D绘图<二>绘制实线和虚线
来源:互联网 发布:苹果mac看视频软件推荐 编辑:程序博客网 时间:2024/04/28 10:39
1,绘制实线
绘制实线的代码比较好理解,我就直接上代码了
-(void)drawSolidLineWithContext:(CGContextRef)ctx{ CGContextSetLineWidth(ctx, 5.0f); //设置线宽 CGContextSetRGBStrokeColor(ctx, 0, 1, 0, 1); //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /**************** 下面绘制3个线段测试端点形状 ******************/ //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //************************************************************************** //定义4个点,绘制线段 const CGPoint points1[]={CGPointMake(10, 40),CGPointMake(100, 40),CGPointMake(100, 40),CGPointMake(20, 80)};//该方法需要传入2N个CGPoint组成的数组,其中1,2个点组成第一条线段,3,4个点组成第3条线段 CGContextStrokeLineSegments(ctx, points1, 4); //绘制线段(默认不绘制端点) //************************************************************************** CGContextSetLineCap(ctx, kCGLineCapSquare); // 设置线段的端点形状,方形端点 const CGPoint points2[] = {CGPointMake(110, 40),CGPointMake(200, 40),CGPointMake(200, 40),CGPointMake(120, 80)}; CGContextStrokeLineSegments(ctx, points2, 4); //绘制线段(默认不绘制端点) //************************************************************************** CGContextSetLineCap(ctx, kCGLineCapRound); //设置端点的形状:圆形端点 const CGPoint points3[] = {CGPointMake(210, 40),CGPointMake(300, 40),CGPointMake(300, 40),CGPointMake(220, 80)}; CGContextStrokeLineSegments(ctx, points3, 4); //绘制线段(默认不绘制端点) //**************************************************************************}
运行效果如下:
2,绘制虚线
在绘制虚线的时候用到了CGContextSetLineDash(context,phase,lengths,count)这个函数,这个函数需要四个参数
context – 这个不用多说
phase - 稍后再说
lengths – 指明虚线是如何交替绘制,具体看例子
count 是 lengths数组的长度
下面结合例子来说明一下:
CGContextSetLineWidth(ctx, 5.0f); //设置线宽 CGContextSetRGBStrokeColor(ctx, 0, 1, 0, 1); //************************************************************************** CGContextSetLineCap(ctx, kCGLineCapButt); //设置线段的端点形状 CGContextSetLineWidth(ctx, 2); CGFloat lengths[] ={10,10};lengths的值{10,10}表示先绘制10个点,再跳过10个点,如此反复, 如图: CGContextSetLineDash(ctx, 0, lengths, 2); // const CGPoint points4[] ={CGPointMake(40, 100),CGPointMake(280, 100)}; //定义两个点,绘制线段 CGContextStrokeLineSegments(ctx, points4, 2); //绘制线段
运行结果如下图:
如果把lengths值改为{10, 30, 10},则表示先绘制10个点,跳过30个 点,绘制10个点,跳过10个点,再绘制30个点,如此反复,如图:
注意count的值等于lengths数组的长度 ,此时lengths的长度为3
phase参数表示在第一个虚线绘制的时候跳过多少个点,举例说明:
phase设置为5
CGContextSetLineCap(ctx, kCGLineCapButt); //设置线段的端点形状 CGContextSetLineWidth(ctx, 2); CGFloat lengths[] ={10,10};lengths的值{10,10}表示先绘制10个点,再跳过10个点,如此反复, 如图: CGContextSetLineDash(ctx, 5, lengths, 2); //phase设置为5 const CGPoint points4[] ={CGPointMake(40, 100),CGPointMake(280, 100)}; //定义两个点,绘制线段 CGContextStrokeLineSegments(ctx, points4, 2); //绘制线段
运行效果如下:
phase设置为2-(void)drawDashLineWithContext:(CGContextRef)ctx{ // 绘制虚线 CGContextSetLineWidth(ctx, 5.0f); //设置线宽 CGContextSetRGBStrokeColor(ctx, 0, 1, 0, 1); //************************************************************************** CGContextSetLineCap(ctx, kCGLineCapButt); //设置线段的端点形状 CGContextSetLineWidth(ctx, 2); CGFloat lengths[] ={10,10};//lengths的值{10,10}表示先绘制10个点,再跳过10个点,如此反复, 如图: CGContextSetLineDash(ctx, 2, lengths, 2); ////phase设置为2 const CGPoint points4[] ={CGPointMake(40, 100),CGPointMake(280, 100)}; //定义两个点,绘制线段 CGContextStrokeLineSegments(ctx, points4, 2); //绘制线段}
运行效果如下:
由于lengths值为{10,10},第一条线就是绘制10,跳过10,反复绘制。 第三条线的phase值为5,则首先绘制【10减去5】,再跳过10,绘制10, 反复绘制。
第四条phase值为5,则首先绘制【10减去2】,再跳过10,绘制10, 反复绘制。
demo下载地址
0 0
- Quartz2D绘图<二>绘制实线和虚线
- Html5 Canvas 绘制虚线和实线的切换方法
- android代码绘制边框、椭圆、实线、虚线
- drawLine DashPathEffect绘制虚线变成了实线
- Quartz2D绘图<三>绘制图形
- Quartz2D绘图之绘制文本
- Android share绘制虚线在手机上显示实线问题
- Iphone Quartz2D 绘图及绘制文字简介
- Iphone Quartz2D 绘图及绘制文字简介
- Iphone Quartz2D 绘图及绘制文字简介
- Iphone Quartz2D 绘图及绘制文字简介
- XMG Quartz2D 继续绘图 绘制进度条
- XMG Quartz2D 继续绘图 绘制圆饼
- flash 绘图API:绘制虚线矩形
- flash绘图API:绘制一条虚线
- 虚线显示实线bug
- echarts 实线改变成虚线
- uml图中实线箭头和虚线箭头的区别
- LabelLayer
- vs2010 建立gui 工程后打开console控制台方法
- 【转】ECC加密算法入门介绍
- 行编辑器 2016年360笔试题目 字符串处理
- 自定义Adapter
- Quartz2D绘图<二>绘制实线和虚线
- 研磨设计模式--单例模式-内部类
- 回调函数
- spring 集成ActiveMQ发送消息Hang住的问题
- xcode升级后ios9.0不能使用http协议的版本的解决方法介绍
- iOS 滚动视图(UIScrollView) UIPageControl
- Android应用多渠道打包脚本
- 静态分析工具PMD使用说明
- 今天学了一个简单的新技能Xcode6以后创建工程后没有.pch文件,所以来个技能--iOS开发