zoukankan      html  css  js  c++  java
  • [转]给UIImage添加圆角(圆角矩形),也可用于CCSprite

    给UIImage添加圆角,也可用于CCSprite
    
    //给图片添加圆角显示
    - (UIImage *) roundCorners: (UIImage*) img
    {
       int w = img.size.width;
       int h = img.size.height;
       
       CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
       CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
       
       CGContextBeginPath(context);
       CGRect rect = CGRectMake(0, 0, img.size.width, img.size.height);
       addRoundedRectToPath(context, rect, 10, 10);
       CGContextClosePath(context);
       CGContextClip(context);
       
       CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);
       
       CGImageRef imageMasked = CGBitmapContextCreateImage(context);
       CGContextRelease(context);
       CGColorSpaceRelease(colorSpace);
       [img release];
       
       return [UIImage imageWithCGImage:imageMasked];
    }
     
    //这是被调用的静态方法
    static void addRoundedRectToPath(CGContextRef context, CGRect rect,
                                    float ovalWidth,float ovalHeight)
    {
       float fw, fh;
       if (ovalWidth == 0 || ovalHeight == 0) {
           CGContextAddRect(context, rect);
           return;
       }
       
       CGContextSaveGState(context);
       CGContextTranslateCTM (context, CGRectGetMinX(rect),
                              CGRectGetMinY(rect));
       CGContextScaleCTM (context, ovalWidth, ovalHeight);
       fw = CGRectGetWidth (rect) / ovalWidth;
       fh = CGRectGetHeight (rect) / ovalHeight;
       CGContextMoveToPoint(context, fw, fh/2);
       CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);
       CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);
       CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);
       CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1);
       CGContextClosePath(context);
       CGContextRestoreGState(context);
    }

    经测验,可以正常使用。
  • 相关阅读:
    SpringCloud微服务初步认识
    SpringCloud-Hystrix:服务熔断与降级
    List接口下重要集合源码分析
    高频面试题:手写一个LRU
    Java基础面试题面经整理(持续更新)
    Redis高可用之主从复制
    Redis过期键删除和内存淘汰
    Redis持久化(RDB与AOF)
    了解Redis事务
    Redis入门与安装
  • 原文地址:https://www.cnblogs.com/ygm900/p/3085480.html
Copyright © 2011-2022 走看看