这两种都可以用来画线,前一种将整条线加入后画出,后一种对每个点进行和前一个点的连线。

sample1

-(void)drawLine:(YJLines *)line{

int count = [line.points count];

CGPoint addLines[count];

for (int j=0; j< [line.points count]; j++)

{

CGPoint point = CGPointFromString((NSString *)[line.points objectAtIndex:j]);

addLines[j].x = point.x;

addLines[j].y = point.y;

}

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetLineJoin(context, kCGLineJoinRound);

CGContextSetLineCap(context , kCGLineCapRound);

CGContextSetBlendMode(context, kCGBlendModeNormal);

CGContextBeginPath(context);

CGContextAddLines(context, addLines, count);

CGContextSetLineWidth(context, line.lineWidth);

CGContextSetAlpha(context, line.lineAlpha);

CGContextSetStrokeColorWithColor(context, line.lineColor.CGColor);

CGContextStrokePath(context);

}

sample2:

- (void) contextDrawFrom: (CGPoint)last toPoint:(CGPoint)current withLine:(YJLines *)ln {

CGContextRef context = UIGraphicsGetCurrentContext();

//    CGContextSetMiterLimit(context, 0.5);

CGContextSetLineJoin(context, kCGLineJoinRound);

CGContextSetLineCap(context , kCGLineCapRound);

CGContextSetBlendMode(context, kCGBlendModeNormal);

CGContextBeginPath(context);

CGContextMoveToPoint(context, last.x, last.y);

CGContextAddLineToPoint(context, current.x, current.y);

CGContextSetLineWidth(context, ln.lineWidth);

CGContextSetAlpha(context, ln.lineAlpha);

CGContextSetStrokeColorWithColor(context, ln.lineColor.CGColor);

CGContextStrokePath(context);

}

AddLineToPoint实现方式在线条alpha为1,即不透明的时候和AddLines一样,而且是实时画线。
但是当线条半透明的时候,AddLines在一条线自身重叠时不会透明度重叠。
而AddLineToPoint却会导致透明度重叠,且move touch的点出也会出现透明度重叠,会显示成点和点之间透明度正确,点上不透明的问题。

转载于:https://www.cnblogs.com/pengyingh/articles/2403225.html

CGContextAddLines和CGContextAddLineToPoint在线条半透明时候的区别相关推荐

  1. 透明、半透明和不透明物体

    透明.半透明和不透明物体的定义 材料可以根据它们传输的光量进行分类.允许光完全透射的材料称为透明材料.任何物体都可以通过透明材料看到.透明材料的一个例子是纯玻璃.不透明材料反射或吸收任何入射光.因此, ...

  2. iPhone重绘机制drawRect

    iPhone重绘机制drawRect 如何使用iPhone进行绘图.重绘操作 iPhone的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一 ...

  3. Quartz画图函数笔记

    0  CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文 1 CGContextMoveToPoint 开始画线 2 CGConte ...

  4. iosnbsp;画图

    Part 1 ios界面常用控件 1.要了解如何在您的代码中显示一个较大的非网络活动指示器,请参考UIActivityIndicatorView类参考. 2.要了解如何显示网络活动指示器,请参考UIA ...

  5. ios 画图_技术成长笔记_新浪博客

    Part 1 ios界面常用控件 1.要了解如何在您的代码中显示一个较大的非网络活动指示器,请参考UIActivityIndicatorView类参考. 2.要了解如何显示网络活动指示器,请参考UIA ...

  6. iPhone图形开发绘图小结

    iPhone图形开发绘图教程是本文要介绍的内容,介绍了很多关于绘图类的使用,先来看详细内容讲解. 1.绘图总结: 绘图前设置: CGContextSetRGBFillColor/CGContextSe ...

  7. iPhone绘图总结

    1.绘图总结:  绘图前设置:  CGContextSetRGBFillColor/CGContextSetFillColorWithColor          //填充色  CGContextSe ...

  8. 游戏用像素画教程知识总结

    前言 制作独立游戏美术部分是必不可少的,对于没有美术基础的我理所当然的选择了像素画作为学习目标.下面记录了学习像素画过程中总结的知识点.绘画软件使用的是Aseprite,可以在steam上购买,也可以 ...

  9. 微信小程序canvas画价格走势图(三)

    今天继续更新在微信小程序上用canvas画价格走势图.上一篇讲了图上主要的部分,也就是折线图的绘制.假如我在我的绘图主函数中只调用了绘制折线图的函数,效果是这样的: 可以说除了作为坐标背景的<i ...

最新文章

  1. PostgreSQL可视化客户端工具
  2. 购物车清除的php,php-如何清除废弃的woocommerce购物车
  3. ABAP常用function 收藏
  4. Linux命令Find实例
  5. 深入理解计算机系统(2.3)---整数的表示方式精解无符号与补码编码(重要)...
  6. cookie和session的区别和用法
  7. 进阶第十一课 Python模块之random
  8. 一个优质的Vue组件库应该遵循什么样的设计原则
  9. Android单机游戏保存进度,安卓游戏存档修改教程 | 手游网游页游攻略大全
  10. MATLAB并行计算
  11. rtx2060为什么叫智商卡_作为世界上智商最低的狗种之一,中华田园犬是否“名副其实”?...
  12. 雅思两次7.5经验分享~希望帮你冲击雅思高分!
  13. 【APICloud系列|1】华为应用市场 应用版权证书或代理证书怎么填
  14. 实用工具---python环境安装注意事项
  15. Python读取tsv文件
  16. UltraEdit 不能复制粘贴
  17. Unity3d vector3.forward和transform.forward的区别!
  18. 阿里短信服务 JAVA
  19. 四川大学计算机学院孙亚男,伍前红
  20. 信号发生器的电路构成及工作原理

热门文章

  1. react-webpack config webpack@3.4.1
  2. 设计模式(六)------设计模式六大原则(5):迪米特法则
  3. Oracle 数据库字典 sys.obj$ 表中关于type#的解释
  4. Php 与 Json
  5. Dedesql数据库类详解(二次开发必备教程)(转)
  6. Discuz!NT - 在线显示列表 游客 bug 修复
  7. 获取网页中选中的文字
  8. Javascript重温OOP之原型与原型链
  9. Swift傻傻分不清楚系列(七)控制流
  10. Django学习笔记第三篇--关于响应返回