通过在 imageview 中绘制圆圈裁剪图像

Posted

技术标签:

【中文标题】通过在 imageview 中绘制圆圈裁剪图像【英文标题】:crop image via drawing circle in imageview 【发布时间】:2011-07-06 10:40:45 【问题描述】:

我想使用 touchMoved 事件通过画圈来裁剪图像。 那么如何在 CGRect 中找到圆点。

我必须将该 cgrect 传递给裁剪函数。

请帮助我在图像上绘制圆圈并找到 CGRect

谢谢

【问题讨论】:

【参考方案1】:

我不确定我是否完全理解您的问题。我会做一些假设:

我假设您要显示图像的圆形区域,并裁剪图像以仅在该圆形内显示其内容;和

我假设您将在用户移动他/她的手指时移动这个圆圈。

我假设未裁剪的区域是纯色。

对于这种情况,我建议创建一个透明的 png 图像文件,该文件带有一个透明圆圈,其他任何地方都是纯色背景。你可以把它放在一个可拖放的 UIView 子类中,当用户移动他/她的手指时,它会看起来好像图像被裁剪成一个随手指移动的圆圈。

以下是使用拖放操作使 UIView 子类工作的方法:

http://bynomial.com/blog/?p=77

如果您需要更复杂的行为,例如非纯色背景,那么您可以考虑使用带有视图 CALayer 属性的图像蒙版。这将是更多的工作,因为每次用户移动手指时您都必须修改掩码。另一种选择是将 CALayer 设置为圆角(cornerRadius 属性),设置 clipsToBounds=YES,然后在用户移动手指时适当地移动它。

参考一些CALayer属性,了解cornerRadius的做法(设置cornerRadius=视图宽度的一半,会是一个圆):

http://bynomial.com/blog/?p=52

【讨论】:

在这里我只想定义一个圆,我必须从该圆创建一个 CGRect,我有一个函数将参数作为 CGRect,所以我只需将该矩形传递给函数。跨度>

以上是关于通过在 imageview 中绘制圆圈裁剪图像的主要内容,如果未能解决你的问题,请参考以下文章

在位图图像中绘制一个圆圈并在 R 中裁剪圆圈外的像素

如何在MATLAB中在图像上绘制圆圈?

HTML5 画布在非矩形部分裁剪并保存图像

如何使用 cv2.circle 在 Qlabel 内的图像上绘制一个圆圈

如何缩放 + 裁剪图像并在 imageview 上显示裁剪的图像

使用 CGContextClip 用图像剪辑一个圆圈