Swift 绘制简单的多边形

不熟悉CGContextAddArcToPoint()用法的同学可以先看下这个例子

  CGContextRef context=UIGraphicsGetCurrentContext();
        
        CGContextSetRGBStrokeColor(context,1,0,0,1);
        CGContextMoveToPoint(context,150,50);
        CGContextAddLineToPoint(context,100,80);
        CGContextAddLineToPoint(context,130,150);
        
        CGContextMoveToPoint(context,150,50);//圆弧的起始点
        CGContextAddArcToPoint(context,100,80,130,150,50);
        CGContextStrokePath(context);

20130926134549046.png

绘制一个地图的AnnotationView的边框

let kArrorHeigh: CGFloat = 10.0

class CustomCallOutView: UIView {

 override func drawRect(rect: CGRect) {
     drawInContext(UIGraphicsGetCurrentContext())
     layer.shadowColor = UIColor.blackColor().CGColor
     layer.shadowOpacity = 1.0
     layer.shadowOffset = CGSize(width: 0, height: 0)
 }
 
 func drawInContext(context: CGContextRef) {
     CGContextSetLineWidth(context, 2.0)
     CGContextSetFillColorWithColor(context, UIColor.orangeColor().CGColor)
     drawPath(context)
     CGContextFillPath(context)
 }
 
 func drawPath(context: CGContextRef) {
     var radius:CGFloat = 6.0
     var minX    = CGRectGetMinX(bounds)
     var maxX    = CGRectGetMaxX(bounds)
     var midX    = CGRectGetMidX(bounds)
     
     var minY    = CGRectGetMinY(bounds)
     var maxY    = CGRectGetMaxY(bounds) - kArrorHeigh
     
     //开始绘制起始点 1
     CGContextMoveToPoint(context, midX + kArrorHeigh, maxY) 
     //点2 和 点1 之间绘制成一条直线
     CGContextAddLineToPoint(context, midX, maxY + kArrorHeigh)
     //点2 和 点1 之间绘制成一条直线
     CGContextAddLineToPoint(context, midX - kArrorHeigh, maxY)

     //点3, 点4 和 点 5 之间绘制一条带弧度的直角线 
     CGContextAddArcToPoint(context, minX, maxY, minX, minX, radius)
  
     CGContextAddArcToPoint(context, minX, minX, maxX, minY, radius)
     CGContextAddArcToPoint(context, maxX, minY, maxX, maxY, radius)
     CGContextAddArcToPoint(context, maxX, maxY, minX, maxY, radius)
     
     CGContextClosePath(context)    
}
Artboard 1@3x.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,455评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,250评论 4 61
  • 最近在按照搭博客的教程学习express,需要用到MongoBD,教程地址与MongoBD相关地址在尾部。 系统:...
    Ricoywang阅读 713评论 0 4
  • 天气预报说寒流大boss要来,各地政府便立即通过官方平台发布预警信息。 “三十年未遇”的说法让我也难免紧张了起来。...
    雪地飞狐阅读 390评论 2 3
  • 肯定的需要 精心时刻 接受礼物 服务的行动 身体的接触
    2面人阅读 248评论 0 0