【问题标题】:In CoreGraphics drawing how can I keep the point of overlap from being darker than the rest of the line?在 CoreGraphics 绘图中,如何防止重叠点比线条的其余部分更暗?
【发布时间】:2025-12-15 07:00:02
【问题描述】:

我的应用程序使用核心图形进行自定义手指绘画。我允许用户更改线条的 alpha 值,并在触摸移动时不断绘制新线条。当我使 alpha 低于 1.0 时,重叠点比线的其余部分更暗。我知道为什么会发生这种情况,但我该如何阻止呢?

【问题讨论】:

  • 你能发布一些代码来展示你是如何画线的吗?我只需要知道方法,以便我可以给你一些建议。

标签: iphone drawing core-graphics paint quartz-2d


【解决方案1】:

我想您希望单个笔画不使其自身变暗,但仍使之前的笔画变暗(大多数绘画应用程序就是这样工作的)。

为此,您需要两个视图/缓冲区,一个用于“当前背景”,一个用于当前笔画。松开手指时将后者与背景合并。

您总是在当前笔划缓冲区中使用 alpha 1 进行绘制,但您使用较低的 alpha 显示和合并它。

【讨论】:

  • 是的,这就是我想要的。我刚刚为当前笔画和旧笔画创建了两个视图。它工作正常,除非我调用函数来合并两个视图,alpha 保持为 1.0。有没有办法改变 UIImage 的 alpha 值?
  • 显然你必须在合并旧笔画时将 alpha 应用到当前笔画视图。
  • 我显然知道,但我在问如何更改 uiimage 的 alpha 但我想通了,你有正确的答案,干得好!
  • 你能解释一下逻辑吗..我不知道如何继续..这是我的帖子..*.com/questions/9407546/…
  • @Aspyn 检查我的答案。一个更好的答案,无需创建 2 个视图。*.com/questions/9407546/…