我正在尝试使用Qt / QML在C ++中从头开始编写文本编辑器。为了绘制文字,我使用Canvas
和Context2D
,看起来大致如下:
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"
所以我遇到的问题是:当我用黑色绘制带有上述功能的文本,然后在白色的同一位置绘制相同的文本时,我希望这个画布再次变为白色。相反,文本的某些轮廓仍然可见(如有阴影)。
我已经尝试关闭所有阴影参数,但它并没有解决我的问题。
以下是截图,以便您更好地了解它的外观:
答案 0 :(得分:1)
没关系,我自己发现了这个问题。 antialiasing
属性设置为true
,从而产生了效果。通过将其设置为false
,文本看起来并不漂亮,但阴影消失了。