如何在 HTML 画布上使颜色透明?

杜克

我有一个 HTMLCanvasElement,上面已经绘制了一些东西,我需要将它的区域设置为透明。我不知道那个区域的坐标,所以我不能使用路径,但我知道我想要摆脱的颜色。

具体来说,我有一个包含文本的 html 元素,按照此处的建议进行:https : //css-tricks.com/adding-stroke-to-web-text/,并将其绘制在画布元素上,如下所示:Rendering HTML elements到 <canvas>

问题是,在进一步使用它之前,我想让我的文本的白色核心在生成的画布元素上透明。这样只会保留文本的笔划。

为什么不直接在画布上描边文本?原因是我需要调整字母间距,只有CSS样式可以做到这一点。

代码片段有点不可读,因为实际上它是通过使用 Bridge.Net 编译 C# 生成的,但应该给出我正在尝试做的总体思路:

ConstructLabel$1: function (toWrite, font, letterSpacing, labelConstructed) {
            if (toWrite == null || Bridge.referenceEquals(toWrite, "")) {
                return null;
            }
            var canvas = document.createElement("canvas");
            var textElement = document.createElement("div");
            textElement.style.width = "auto";
            textElement.style.position = "absolute";
            textElement.style.whiteSpace = "nowrap";
            textElement.style.letterSpacing = letterSpacing;
            textElement.style.font = font;

            //make the storking of text
            textElement.style.color = "white";
            textElement.style.textShadow = "-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000";

            textElement.textContent = toWrite;

            //ToCanvas is my wrapper that takes a HTML element and returns a new canvas that
            //will draw a 1:1 representation of that element on it. It executes
            //the callback after it being drawn.
            return Utility.ToCanvas(textElement, function (drawnCanvas) {
                var ctx = drawnCanvas.getContext("2d");
                //ctx.ClearColor("white"); <----- how to do this?
                labelConstructed(drawnCanvas);
            });
        }
杜克

我终于在这里找到了一个答案:https : //gamedev.stackexchange.com/questions/19257/how-do-i-make-magenta-in-my-png-transparent-in-html5-canvas-js这里应用的是:

ConstructLabel$1: function (toWrite, font, letterSpacing, labelConstructed) {

            [code here as earlier]

            return Utility.ToCanvas(textElement, function (drawnCanvas) {
                var ctx = drawnCanvas.getContext("2d");
                var matrix = ctx.getImageData(0, 0, drawnCanvas.width, drawnCanvas.height);
                var data = matrix.data;
                for (var i = 0; i < data.length; i = (i + 4) | 0) {
                    if (((((data[i] + data[((i + 1) | 0)]) | 0) + data[((i + 2) | 0)]) | 0) === 765) {
                        data[((i + 3) | 0)] = 0;
                    }
                }
                ctx.putImageData(matrix, 0, 0);
                labelConstructed(drawnCanvas);
            });
        },

由于锯齿,这确实会在文本的内侧留下一些粗略的白色像素,但如果需要,可以通过更改像素条件来纠正它。

像这样进行过滤的结果应该被缓存,因为它是一个很长的循环来逐个像素地做东西。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在多个画布HTML5上绘制圆?

来自分类Dev

如何在HTML画布上绘制位图文件?

来自分类Dev

如何在HTML画布上绘制位图文件?

来自分类Dev

如何在html画布上绘制人字形图案

来自分类Dev

如何在画布上绘制多个半透明矩形?

来自分类Dev

如何在不透明的画布上绘制?

来自分类Dev

如何在Android中的画布文本上添加透明背景?

来自分类Dev

透明颜色HTML5画布

来自分类Dev

如何使用画布更改图像的不透明度,然后将其加载到画布中的另一图像上?-HTML

来自分类Dev

如何检测透明画布上的形状?

来自分类Dev

如何在画布上更改SVG颜色-Fabric.js

来自分类Dev

如何在鼠标输入上更改 HTML 的背景颜色

来自分类Dev

如何在点击事件中更改HTML5画布的填充颜色?

来自分类Dev

如何使用 html2canvas 生成透明画布

来自分类Dev

如何在图像上放置颜色而不影响透明区域?

来自分类Dev

HTML5 Canvas-如何在画布上的图像上绘制矩形

来自分类Dev

如何在HTML画布上渲染图标字体,尤其是在Material Design图标字体上?

来自分类Dev

在 HTML5+JavaScript 中检测画布上的颜色碰撞

来自分类Dev

如何在具有更好插值的html5画布上缩放图像?

来自分类Dev

如何在HTML画布上绘制“真棒字体”图标[版本<5]

来自分类Dev

HTML如何在画布元素上拖动时防止意外的页面选择?

来自分类Dev

如何在HTML5中使绘图在画布上可拖动

来自分类Dev

如何在HTML5画布上绘制背景图像

来自分类Dev

如何在变形的HTML5画布上获取鼠标位置

来自分类Dev

如何在图表旁边的画布上放置额外的文本(不使用 HTML)?

来自分类Dev

透明 HTML5 画布 todataurl 仅在移动设备上呈现透明背景

来自分类Dev

如何使任何html颜色代码半透明[Android]

来自分类Dev

如何更改画布上圆圈的不透明度

来自分类Dev

硒-如何在XY位置上找到画布上像素的颜色?

Related 相关文章

  1. 1

    如何在多个画布HTML5上绘制圆?

  2. 2

    如何在HTML画布上绘制位图文件?

  3. 3

    如何在HTML画布上绘制位图文件?

  4. 4

    如何在html画布上绘制人字形图案

  5. 5

    如何在画布上绘制多个半透明矩形?

  6. 6

    如何在不透明的画布上绘制?

  7. 7

    如何在Android中的画布文本上添加透明背景?

  8. 8

    透明颜色HTML5画布

  9. 9

    如何使用画布更改图像的不透明度,然后将其加载到画布中的另一图像上?-HTML

  10. 10

    如何检测透明画布上的形状?

  11. 11

    如何在画布上更改SVG颜色-Fabric.js

  12. 12

    如何在鼠标输入上更改 HTML 的背景颜色

  13. 13

    如何在点击事件中更改HTML5画布的填充颜色?

  14. 14

    如何使用 html2canvas 生成透明画布

  15. 15

    如何在图像上放置颜色而不影响透明区域?

  16. 16

    HTML5 Canvas-如何在画布上的图像上绘制矩形

  17. 17

    如何在HTML画布上渲染图标字体,尤其是在Material Design图标字体上?

  18. 18

    在 HTML5+JavaScript 中检测画布上的颜色碰撞

  19. 19

    如何在具有更好插值的html5画布上缩放图像?

  20. 20

    如何在HTML画布上绘制“真棒字体”图标[版本<5]

  21. 21

    HTML如何在画布元素上拖动时防止意外的页面选择?

  22. 22

    如何在HTML5中使绘图在画布上可拖动

  23. 23

    如何在HTML5画布上绘制背景图像

  24. 24

    如何在变形的HTML5画布上获取鼠标位置

  25. 25

    如何在图表旁边的画布上放置额外的文本(不使用 HTML)?

  26. 26

    透明 HTML5 画布 todataurl 仅在移动设备上呈现透明背景

  27. 27

    如何使任何html颜色代码半透明[Android]

  28. 28

    如何更改画布上圆圈的不透明度

  29. 29

    硒-如何在XY位置上找到画布上像素的颜色?

热门标签

归档