我想在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