【问题标题】:The intersection part of CSS Canvas paths seem to have incorrect color.CSS Canvas 路径的交叉部分似乎颜色不正确。
【发布时间】:2012-09-23 13:47:40
【问题描述】:

我正在尝试使用HTML Canvas 绘制路径。它由连接在一起的几条贝塞尔曲线组成。出于某种原因,我无法绘制整个路径然后进行描边。相反,我需要为每条贝塞尔曲线描边。我使用浅紫色作为描边颜色,但在曲线的交点处,我似乎得到了类似白色的东西,而不是我期望的浅紫色。像这样(抱歉,由于我是 Stack Overflow 上的新手,所以我无法发布图片):

我使用的是不透明度为 1 的 stroke style,所以我相信这不是透明度问题。那么可能是什么导致了这个问题呢?

仅供参考,我正在使用这样的代码绘制每条贝塞尔曲线,其中 a 是画布的绘制上下文,this.bloom.c 类似于“rgba(xxx,xxx,xxx,1)”:

a.strokeStyle = this.bloom.c;
a.beginPath();
a.moveTo(e.x, e.y);
a.bezierCurveTo(c.x, c.y, b.x, b.y, d.x, d.y);
a.stroke(); 

非常感谢!

【问题讨论】:

  • +1。在我的脑海中,像素以 RGBA 加法方式相互复制。 PS:将您的实验放在jsfiddle.net 将允许更快的响应。根据我的经验,Webkit 和 Chrome 是最可靠的 canvas HTML5 实现,所以你不会在这里看到太大的区别。
  • 另请参阅:为描边设置混合模式? stackoverflow.com/questions/4939453/…

标签: html css canvas web


【解决方案1】:

为复合操作使用 HTML5 Canvas 上下文原生支持的适当“混合模式”。在您的情况下,您可以使用 'source-over'

对于example

var context = document.getElementById('myCanvas').getContext('2d');
context.globalCompositeOperation = 'source-over';

Compositing and Blending 1.0

source-atop
source-in
source-out
source-over
destination-atop
destination-in
destination-out
destination-over
lighter
xor
copy

【讨论】:

  • 哇!它就像一个魅力!我确实怀疑它与混合模式有关,但不知道如何在 HTML Canvas 中调整它。无论如何真的非常感谢你!另外,我还有我网站的全图截图,以防你好奇我要做什么~Picture
  • @SundayLee 干杯!考虑添加另一行,例如Result Update 到您的帖子并向我们展示结果...
猜你喜欢
  • 2022-11-22
  • 2012-09-03
  • 2017-06-22
  • 2015-07-27
  • 2011-08-09
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多