在 UIImage 上覆盖一个较小的矩形
Overlay a smaller rectangle on a UIImage
我想在图像中叠加一个矩形。下面的代码目前有效,但它 return 是一个带有细框的矩形。我不能改变矩形框的宽度。 return 具有较粗边框的自定义矩形的一种方法是使用 UIView,但不可能将 SubView 添加到 UIImage。对此有什么解决办法吗?谢谢。
-(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;
}
UIRectFrame draws a frame around the inside of the specified rect. If you want to fill the area instead, you can use UIRectFill.
要更改描边 and/or 填充颜色,您可以在 UIColor
上调用 -setStroke
或 -setFill
。例如:
[[UIColor red] setFill];
UIRectFill(rect);
要设置描边线宽,需要在当前CGContext上设置线宽:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 10);
编辑:
还有一个更简单的方法:NSFrameRectWithWidth 允许你直接指定宽度而不是在上下文中设置线宽。
我想在图像中叠加一个矩形。下面的代码目前有效,但它 return 是一个带有细框的矩形。我不能改变矩形框的宽度。 return 具有较粗边框的自定义矩形的一种方法是使用 UIView,但不可能将 SubView 添加到 UIImage。对此有什么解决办法吗?谢谢。
-(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;
}
UIRectFrame draws a frame around the inside of the specified rect. If you want to fill the area instead, you can use UIRectFill.
要更改描边 and/or 填充颜色,您可以在 UIColor
上调用 -setStroke
或 -setFill
。例如:
[[UIColor red] setFill];
UIRectFill(rect);
要设置描边线宽,需要在当前CGContext上设置线宽:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 10);
编辑: 还有一个更简单的方法:NSFrameRectWithWidth 允许你直接指定宽度而不是在上下文中设置线宽。