通过在 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 中绘制圆圈裁剪图像的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 cv2.circle 在 Qlabel 内的图像上绘制一个圆圈