QML Canvas / Context2D fillText()意外行为

时间:2017-01-02 00:07:15

标签: qt canvas qml

我正在尝试使用Qt / QML在C ++中从头开始编写文本编辑器。为了绘制文字,我使用CanvasContext2D,看起来大致如下:

function drawString(text, x, y, font) {
    var ctx = getContext("2d");
    ctx.font = font;
    ctx.fillStyle = "black";
    ctx.fillText(qsTr(text), x, y);
    ctx.stroke();
}

为了以图形方式表示所选区域,我想反转选区,例如在区域上放置一个黑色矩形并使文本变为白色。

为此,我将使用ctx.globalCompositeOperation = "xor"

所以我遇到的问题是:当我用黑色绘制带有上述功能的文本,然后在白色的同一位置绘制相同的文本时,我希望这个画布再次变为白色。相反,文本的某些轮廓仍然可见(如有阴影)。

我已经尝试关闭所有阴影参数,但它并没有解决我的问题。

以下是截图,以便您更好地了解它的外观:

enter image description here

1 个答案:

答案 0 :(得分:1)

没关系,我自己发现了这个问题。 antialiasing属性设置为true,从而产生了效果。通过将其设置为false,文本看起来并不漂亮,但阴影消失了。