【发布时间】:2013-10-09 17:39:12
【问题描述】:
我想在canvas 上绘制一个scrollmap,它有一堆Y 坐标。
这样做最有效的是什么?我想带有一些平均点的渐变是最好的方法,但我不知道该怎么做。
我现在想做的是用red 填充画布,然后从顶部到每个Y 坐标绘制green 矩形。如果矩形具有一定程度的透明度,则应该会产生相当不错的滚动热图。
还有其他想法吗?或者如果有人知道如何实现渐变,那就太好了。
如果您不知道,滚动图应该如下所示:
【问题讨论】:
-
为什么要为此使用画布,而不是常规的 100% 高度/宽度 div,具有 css3 渐变背景 (colorzilla.com/gradient-editor/…) 和不透明度:0.3 之类的?
-
好吧,
canvas方法不是更容易编码然后使用 javaScript 生成跨设备CSS3渐变吗?通过使用 CSS 渐变,我必须为所有浏览器替换所有停止点的位置。我知道渐变或具有超过 2 个停止点的 IE 确实有问题,特别是如果其中一些点重合。不过好点,我也会试试的。 (我要画布是因为我已经使用了带有 heatmap.js 的画布,所以canvas已经存在了,我只需要在上面画一个渐变... -
另外真正的问题是
not如何绘制渐变,但是如何通过拥有许多Y高度来找到渐变的停止点。 -
这取决于您要定位的目标。您是否有“它应该在......中工作”和“理想情况下也在......”的列表?例如,css3 渐变在所有当前 gen 桌面浏览器中都很容易(ie10/11 会很乐意做多站渐变)。如果您已经有了画布,那么首先要找到 RGB 原色 + 副色的停靠点,然后进行简单的插值(在两个简单的 lerps 中执行 255/0/0 到 255/255/0 到 0/255/0 而不是复杂的颜色插值让生活变得轻松)
-
是的,我知道,但是找到这些停止点的最相关和最简单的方法是什么?我正在考虑对点进行升序排序,然后如果我需要 5 个停靠点,则获取在此排序数组中的以下位置找到的 5 个元素的 Y 值:0、1*NrY/5、2*NrY/5 等。但是,如果假设所有 Y 都相同,这不会生成准确的热图。
标签: javascript html canvas linear-gradients processing.js