我有一个UIImageView,其中有一个图像,背景是一辆透明的汽车:
我想在车周围画一个边框:
怎样才能达到这个效果呢?
目前,我已经用这种方法测试了CoreGraphics,但没有好的结果:
// load the image
UIImage *img = carImage;
UIGraphicsBeginImageContext(img.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[[UIColor redColor] setFill];
CGContextTranslateCTM(context, 0, img.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextSetBlendMode(context, kCGBlendModeNormal);
CGRect rect = CGRectMake(0, 0, img.size.width * 1.1, img.size.height*1.1);
CGContextDrawImage(context, rect, img.CGImage);
CGContextClipToMask(context, rect, img.CGImage);
CGContextAddRect(context, rect);
CGContextDrawPath(context,kCGPathFill);
// generate a new UIImage from the graphics context we drew onto
UIImage *coloredImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
需要帮忙吗?谢谢。
3条答案
按热度按时间fkvaft9z1#
我是这样做的:
我在Swift中做了这个,只是为了在playgrounds中检查它,我认为您可以轻松地将它翻译为Objective-C:
那么它是如何工作的呢?
1.我们创建干净的背景(又名画布),尺寸比原始图像(用于轮廓)大一点
1.我们在整个画布上画出自己形象
1.我们用颜色填充图像
1.我们在上面画一个小图
您可以通过更改此属性来更改轮廓大小:
var newImageKoef:CGFloat = 1.08
这是我在Playground里得到的结果
“雨燕5号"
mf98qq942#
斯威夫特5
1tuwyuhd3#
这种方法有点不同,但更简单。