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

    经测验,可以正常使用。
  • 相关阅读:
    day06作业
    day04_ATM项目说明书
    ATM+购物车基本思路流程
    装饰器、迭代器、生成器、递归、匿名函数、面向过程编程、三元表达式6
    day05函数部分
    自制七段数码管源码
    字符串格式化
    字符串表示
    格式化输出
    python入门——列表类型、元组、字典类型
  • 原文地址:https://www.cnblogs.com/ygm900/p/3085480.html
Copyright © 2011-2022 走看看