我想在C++中使用Qt/QML从头开始编写文本编辑器。为了绘制文本我使用Canvas
与Context2D
,它看起来大致是这样的:QML画布/ Context2D fillText()意外的行为
function drawString(text, x, y, font) {
var ctx = getContext("2d");
ctx.font = font;
ctx.fillStyle = "black";
ctx.fillText(qsTr(text), x, y);
ctx.stroke();
}
为了以图形方式表示选择的区域,我想反转selecion,例如将一个黑色的矩形在一个区域并使文本变白。
为此,我将使用ctx.globalCompositeOperation = "xor"
所以我跑进问题是:当我在黑色的绘制功能的文字上方,然后事后画在同一地点同一文本中白我期望这幅画布再次变成白色。相反,文本的轮廓还是可见的(就像有一个影子)。
我已经尝试关闭所有阴影参数,但它没有解决我的问题。
下面是截图,所以你得到的是什么,它看起来像一个更好的主意:
考虑发布完整的代码来重现问题。 – dtech