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

    经测验,可以正常使用。
  • 相关阅读:
    Mysql权限控制
    ionic中修改图标的问题
    在centos中使用vim编辑器
    使用laravel的任务调度(定时执行任务)
    在预装win8的电脑上换win7系统讲解
    游戏电脑需要看的配置
    数据结构学习之二叉树
    数据结构排序算法之希尔排序
    数据结构排序算法之归并排序
    数据结构排序算法之简单插入排序
  • 原文地址:https://www.cnblogs.com/ygm900/p/3085480.html
Copyright © 2011-2022 走看看