提问人:Lor Kam Hoi 提问时间:3/24/2022 最后编辑:Lor Kam Hoi 更新时间:3/25/2022 访问量:102
在 UIImage 上覆盖较小的矩形
Overlay a smaller rectangle on a UIImage
问:
我想在图像中叠加一个矩形。下面的代码目前有效,但它返回一个带有细框架的矩形。我无法更改矩形框架宽度。返回边框较粗的自定义矩形的一种方法是使用 UIView,但无法向 UIImage 添加 SubView。有什么解决办法吗?谢谢。
-(UIImage *)drawRectangleOnImage:(UIImage *)img rect:(CGRect )rect{
CGSize imgSize = img.size;
CGFloat scale = 0;
UIGraphicsBeginImageContextWithOptions(imgSize, NO, scale);
[img drawAtPoint:CGPointZero];
[[UIColor redColor] setStroke];
UIRectFrame(rect);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
答:
1赞
adeasismont
3/24/2022
#1
UIRectFrame 在指定矩形的内侧绘制一个框架。如果要改为填充该区域,可以使用 UIRectFill。
要更改描边和/或填充颜色,您可以调用 或 on 。例如:-setStroke
-setFill
UIColor
[[UIColor red] setFill];
UIRectFill(rect);
要设置笔触线宽,您需要在当前 CGContext 上设置线宽:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 10);
编辑: 还有一种更简单的方法:NSFrameRectWithWidth 允许您直接指定宽度,而不是在上下文中设置行宽。
评论
0赞
Lor Kam Hoi
3/24/2022
不,我不想要一个填充的矩形。我只需要框架。
1赞
adeasismont
3/24/2022
我更新了答案,以包含有关如何检索当前 CGContext 和更改行宽的详细信息。
1赞
adeasismont
3/25/2022
@LorKamHoi对不起,再看一眼,还有一种更简单的方法。把它添加到我的答案中。
评论
UIImage