2017-10-16 3 views
0

テキストをバックグラウンドカラーで書き直そうとしましたが、古いテキストのエッジ(アウトライン)が画面に残ります。なぜ私は考えていない。手伝ってくれませんか?将来的にはIn Processingは、前のテキストを削除する最速の方法です。

background(-1); 
noLoop(); 
fill(#500F0F); 
text("99", 300, 200); 
fill(-1); 
text("99",300, 200); 

Outcome:

+1

は、なぜあなたは単に 'バックグラウンド()'と画面全体をクリアしませんか? –

答えて

1

MCVEを投稿してみてください。あなたのポストのコードはテキストを画面から完全に引き出します。実際のコードとは何が違うのでしょうか? draw()機能を使用していますか?これらの不確実性は、MCVEを掲示することで回避してください。

とにかく、基本的な問題はanti-aliasingによって発生します。デフォルトでは、アンチエイリアスを使用して、より滑らかで、ピクセル化されていないように描画されます。図面をズームインしてエッジが少しぼやけていることがわかると、これを見ることができます。これはほとんどの図面では良いことですが、あなたのケースでは、ぼやけたエッジが見えるようになっています。

だから、その問題を解決するには、noSmooth()関数を呼び出すことによって、アンチエイリアシングを無効にできます。

size(500, 500); 
noSmooth(); 
background(255); 
noLoop(); 
fill(#500F0F); 
text("99", 300, 200); 
fill(255); 
text("99",300, 200); 

はまた、私は代わりに-1のPARAMTERとして255を使用していていることに気づきます。 -1のカラーパラメータがどうなっているのかわからないので、安全のために0255の間に置いておきます。

しかし、最初の場所にあるテキストを「削除」する必要があるのは少し怪しいです。ジョージのコメントのように、ちょうどbackground()関数を呼び出して古いフレームをクリアしないでください。

ここで小さな例です:

void draw() { 
    background(64); 
    if (mousePressed) { 
    text("hello", 20, 40); 
    } 
} 
+1

素敵な拡張回答(+1) –

関連する問題