javascript - HTML5 canvas - 控制在同一位置绘制时发生的情况

标签 javascript html gwt canvas html5-canvas

当我在与上一行相同的坐标中绘制一条线时,如何控制会发生什么? 目前颜色变得更亮,但我希望它保持不变(或更准确地说 - 我希望第二行位于第一行之上)。

我尝试这样做:

_context.setGlobalCompositeOperation(Composite.SOURCE_OVER);

但它似乎仅在 Canvas 上绘制 Canvas 时才有效,而在同一 Canvas 上绘制时则无效。

最佳答案

假设您的颜色具有完整的 Alpha,您的问题可能与您在整数坐标处绘制宽度为 1 的线条有关。

看下面的 fiddle :http://jsfiddle.net/RAgak/

在整数坐标处绘制会使线条更宽且模糊。第二次画的话就会变得更亮。但是当我在半整数坐标处绘制线条时,这种情况不会发生。

var y = 10;
c.beginPath();
c.moveTo(0, y);
c.lineTo(30, y);
c.stroke(); // fuzzy
c.beginPath();
c.moveTo(50, y+0.5);
c.lineTo(80, y+0.5);
c.stroke(); // ok

这是因为线条是在它们所在的所有像素上绘制的(在 Canvas 上定位是 float 的)。当你想在 Canvas 上用 JavaScript 绘制精确的垂直或水平线时,最好将它们设置为半整数。

参见插图:第一条水平线是用 y 位置为 1 绘制的。这条线模糊且宽。第二条水平线的 y 位置为 4.5。它薄而精确。

enter image description here

至少在绘制水平或垂直线(或矩形)时,解决方案是考虑线的宽度并在整数或半整数坐标处绘制。

关于javascript - HTML5 canvas - 控制在同一位置绘制时发生的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13740069/

相关文章:

java - 如何将基本的 GWT 组件与 GIN 绑定(bind)?

javascript - 基于翻译字符串的加载指令

javascript - 如何通过javascript使输入文本保持不变

gwt - 将 SuggestBox 作为可编辑单元格添加到 CellTable

html - Roboto 400 在视网膜 MacBook 上看起来比 700 更大胆

javascript - 如何从 Adob​​e Business Catalyst 中的同一登录页面创建单独的安全区域?

java - Google App Engine 中漂亮的 URL

javascript - 从 Web API 获取 JSON 数据后,在页面加载时动态添加新的 HTML 元素

javascript - 将 $index 和 $data 作为参数传递给点击处理函数

javascript - 在标题中显示 JSON 的属性 (angularjs)