【问题标题】:Issue with erase or transparent stroke using CoreGraphics framework使用 CoreGraphics 框架的擦除或透明笔划问题
【发布时间】:2010-07-14 15:03:11
【问题描述】:

在我的一个应用程序中,我试图擦除/透明笔划UIImage 的一部分,该部分正在使用 CoreGraphics 框架(CGContextRef 等)进行绘制。在此过程中,我可以通过调用“removeAllObjects”消息一次性清除绘图,但我无法弄清楚如何擦除绘图图像的一部分。天哪!!我坐了一整天,但仍然没有结果,现在它杀了我。请大家从这里帮助我。简而言之,我的要求是像橡皮擦一样可以擦除我的绘图图像的一部分。感谢您的帮助!

【问题讨论】:

    标签: iphone core-graphics


    【解决方案1】:

    只要CGContextSetBlendMode(context, kCGBlendModeClear)

    此调用更改颜色混合模式,使绘图操作将清除位图而不是使用颜色绘图。

    要切换回正常渲染,请执行CGContextSetBlendMode(context, kCGBlendModeNormal)

    使用不同的混合模式会很有帮助。

    【讨论】:

      【解决方案2】:

      一般来说,CGContexts 是仅可添加的画布——也就是说,您只能添加更多的颜料,而不能移除您已经涂在上面的任何现有颜料。如果你的画布一开始是白色的,你可以用白色覆盖来伪造和擦除操作。

      一个简单的解决方案是手动清除正在擦除的支持位图区域。

      一个复杂的解决方案是存储用户输入的所有绘画操作,并将它们作为擦除操作的结果进行变形(这也将使添加撤消模式变得简单)

      注意:有 CGContextClearRect 函数,但它通常只能在位图上下文中按预期工作。

      【讨论】:

      • 我已经尝试过使用 CGContextSetBlendMode,可能 b 正在朝着一个方向前进,我只是想不通。removeAllObjects 被调用,因为我使用 NSMutableArray 将绘图对象保留在该缓冲区中,这正在通过调用 removeAllObjects 消息进行清除。我的应用程序有三个选项卡栏项目,一个用于保存绘图图像,第二个是清除图像,第三个是清除/擦除绘图图像的一部分(类似于 MSPaint 中的橡皮擦) 我刚刚发布在这里作为我的查询。请帮助我,因为我仍然不是很好@CoreGraphics/2D 物理。
      • 或者你的第一个伪造和擦除的解决方案,我可以试试。老实说,我对 CGContextClearRect 没有任何先验知识,因此需要在 Google 上搜索更多信息。
      • 最好的办法是使用CGBitmapContextCreate 并提供您自己的后备缓冲区——然后您可以使用自己的擦除代码直接修改它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      相关资源
      最近更新 更多