菜鸟教程小白 发表于 2022-12-13 11:49:31

iphone - 如何在 quartz 2d 中绘制 alpha < 1 的线条


                                            <p><p>毫无疑问,这可能是一个重复的问题,但我无法从此处的任何帖子中获得适当的解决方案。因此,我将其发布为新帖子,希望能得到一些解决方案。 </p>

<p>在我的绘图应用程序中,我想为要绘制的线条提供不透明度功能。
但是当我将 alpha 分配给颜色时,我在线条之间得到了重叠点。 </p>

<p>我发现在两个 View 中绘制可以解决这个问题,但我无法理解其背后的逻辑。 </p>

<p> <img src="/image/drxr1.png" alt="enter image description here"/> </p>

<p>我正在使用普通 quartz 二维码在触摸事件上画线。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><a href="https://stackoverflow.com/questions/7328030/in-coregraphics-drawing-how-can-i-keep-the-point-of-overlap-from-being-darker-th/7329573#comment11890071_7329573" rel="noreferrer noopener nofollow">In CoreGraphics drawing how can I keep the point of overlap from being darker than the rest of the line?</a> 的副本</p>

<p>诀窍是将笔触放在自己的缓冲区中,您可以在其中正确剪切 alpha,然后再将整个内容与背景混合。</p>

<p>这是一种方法:创建 2 个 View ,一个用于背景,另一个用于线条。在顶 View 中用 1 的 alpha 绘制线条!然后将整个前景 View 的 alpha 设置为 0.5(或您要使用的任何值)。</p>

<pre><code>;
</code></pre>

<p>这将防止半透明笔触增强自身。但是 2 个相互交叉的不同笔触呢(就像你的例子一样)。你想让那个交叉点更激烈吗?如果是这样,那么您需要为每个笔触创建一个新 View 。为防止 View 过多导致内存溢出,您需要将之前的顶 View 与背景混合。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 如何在 quartz2d 中绘制 alpha &lt; 1 的线条,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/9407546/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/9407546/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 如何在 quartz 2d 中绘制 alpha &lt; 1 的线条