我一直在努力研究这种方法。我正在另一个图像上绘制一个头像。用户图片我想成为一个圆圈,但我似乎无法弄清楚如何。用户图片为UIImage
,而非UIImageView
。如果它是一个imageview,我知道如何制作一个圆圈。下面是代码。可能有更好的方法。
-(UIImage *)drawImage:(UIImage*)pinImage withBadge:(UIImage *)user{
UIGraphicsBeginImageContextWithOptions(pinImage.size, NO, 0.0f);
[pinImage drawInRect:CGRectMake(0, 0, pinImage.size.width, pinImage.size.height)];
[user drawInRect:CGRectMake(20.0, 10.0, user.size.width/2, user.size.height/2)];
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultImage;
}
结果很好,但用户图像仍为方形,不是圆形。我尝试将用户图片添加到UIImageView
,将其转换为圆圈,然后通过调用yourImageView.image
在方法中使用它,但没有运气。我还尝试了很多其他方法。我的逻辑很可能不正确。
期望的结果是在图钉/注释之上的圆形图像位置。黑点是一个图像(比这个更大的圆圈)。
答案 0 :(得分:3)
您可以将图像上下文剪切到图像的路径
// Start the image context
UIGraphicsBeginImageContextWithOptions(pinImage.size, NO, 0.0);
UIImage *resultImage = nil;
// Get the graphics context
CGContextRef context = UIGraphicsGetCurrentContext();
// Draw the first image
[pinImage drawInRect:CGRectMake(0, 0, pinImage.size.width, pinImage.size.height)];
// Get the frame of the second image
CGRect rect = CGRectMake(20.0, 10.0, user.size.width/2, user.size.height/2)
// Add the path of an ellipse to the context
// If the rect is a square the shape will be a circle
CGContextAddEllipseInRect(context, rect);
// Clip the context to that path
CGContextClip(context);
// Do the second image which will be clipped to that circle
[user drawInRect:rect];
// Get the result
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
// End the image context
UIGraphicsEndImageContext();
答案 1 :(得分:0)
创建一个圆形路径,然后剪切到那个?
CGContextAddArc(ctx, ....);
CGContextClip(ctx);