您的位置:首页 > 其它

如何制作一个圆角图像

2013-09-13 18:38 375 查看
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);
}
 
 
-
(UIImage *)roundCornersOfImage:(UIImage *)source;
{
    
int
 
w
= source.size.width;
    
int
 
h
= source.size.height;
 
 
    
CGColorSpaceRef
colorSpace = CGColorSpaceCreateDeviceRGB();
    
CGContextRef
context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
 
 
    
CGContextBeginPath(context);
    
CGRect
rect = CGRectMake(0, 0, w, h);
    
addRoundedRectToPath(context,
rect, 5, 5);
    
CGContextClosePath(context);
    
CGContextClip(context);
 
 
    
CGContextDrawImage(context,
CGRectMake(0, 0, w, h), source.CGImage);
 
 
    
CGImageRef
imageMasked = CGBitmapContextCreateImage(context);
    
CGContextRelease(context);
    
CGColorSpaceRelease(colorSpace);
 
 
    
return
 
[UIImage
imageWithCGImage:imageMasked];   
}
 
 
                        
 
 
//该代码片段来自于: http://www.sharejs.com/codes/objectc/142
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: