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);
    }

    经测验,可以正常使用。
  • 相关阅读:
    light-rtc: 理念与实践
    浅谈 WebRTC 的 Audio 在进入 Encoder 之前的处理流程
    倍频程与钢琴调式的距离
    实战排查|为什么遮挡推流摄像头,会导致播放绿屏?
    深入浅出 WebRTC AEC(声学回声消除)
    揭秘 VMAF 视频质量评测标准
    绕过CDN查找真实IP方法笔记
    Linux安全加固
    Windows安全加固
    常见端口渗透总结
  • 原文地址:https://www.cnblogs.com/ygm900/p/3085480.html
Copyright © 2011-2022 走看看