2017-01-02 10 views
0

Qt/QMLを使用して、C++でゼロからテキストエディタを作成しようとしています。テキストを描画するために私はおおよそ次のようになりますこれは、Context2DCanvasを使用します。QML Canvas/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"

を使用します。私は黒で上記の機能を備えたテキストを描画するとき、私は期待し、その後、その後白で同じ場所で同じテキストをペイントこのキャンバスは再び白になる。代わりに、(影があるような)見えるテキストのアウトラインのいくつかの種類がまだあります。

すべてのシャドウパラメータをオフにしてみましたが、問題は解決しませんでした。あなたはそれがどのように見えるかの良いアイデアを得るので、ここで

はスクリーンショットです:

enter image description here

+1

問題を再現するための完全なコードを投稿することを検討してください。 – dtech

答えて

1

ネヴァーマインドを、私は問題を自分自身を発見しました。 antialiasingプロパティはtrueに設定されていました。 falseに設定すると、テキストはきれいに見えませんが、影は消えてしまいます。

+0

再描画する前にキャンバスを消去しようとしましたか? ( 'ctx.clearRect(0,0、width、height)'を試してください)。 – Afilu