【问题标题】:How to draw like this in drawRect?如何在drawRect中这样绘制?
【发布时间】:2011-04-25 01:31:51
【问题描述】:

iPhone 开发问题: 我想画一个四边形,四边形的四个黑角(CGPoint)是可变的。 我覆盖了drawRect 方法,但它只显示矩形而不是四边形。这是否意味着drawRect 只能绘制具有四个 CGPoints 的矩形?

最初的要求是通过触摸和移动任意角点来改变四边形的形状。我可以通过覆盖 drawRect 来解决这个问题吗?我应该做点别的吗? 谢谢。

【问题讨论】:

    标签: iphone touch drawrect


    【解决方案1】:

    -drawRect: 是您放置绘图代码的位置,该代码几乎可以绘制您想要的任何东西。你当然不限于矩形。我不确定我是否遵循您问题的特殊性质-如果您发布一些代码会很有帮助。一般来说,-drawRect: 是放置绘图代码的正确位置,如果您的视图没有按照您想要的方式绘制,很可能是由于代码中的问题而不是 -drawRect: 方法的限制。

    【讨论】:

      【解决方案2】:

      具体来说,您的视图框架定义了它的origin{x,y}size{width,height}

      这是一个简单的矩形。

      同样,为绘图参数传递了一个矩形。

      要让您的视图表示比矩形更复杂的四边形,您必须编写一些自定义几何转换(除非函数已经存在)。有许多 api 可以缓解这种情况(例如 NSBezierPath/UIBezierPath)。

      最终,您需要一个足够大的框架来容纳整个四边形。当被要求绘制它的一部分时,您决定绘制什么以及如何填充它。

      由于您希望矩形内有 4 个可移动点,因此您必须定义 4 个点(例如 CGPoint)——每个角一个。使这些 ivars 成为您视图的子类。当它们发生变化时,适当地使视图无效。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多