在Processing中,这是删除以前文本的最快方法

时间:2017-10-16 08:48:45

标签: text processing erase

我尝试使用背景颜色重写文本,但旧文本的边缘(轮廓)仍保留在屏幕上。我不知道为什么。你能帮我吗?

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

Outcome:

1 个答案:

答案 0 :(得分:1)

将来,请尝试发布MCVE。帖子中的代码将文本完全从屏幕上删除,这让我想知道你的真实代码还有什么不同。您使用的是draw()功能吗?请通过发布MCVE来避免这些不确定性。

无论如何,您的基本问题是由anti-aliasing引起的。默认情况下,Processing使用消除锯齿功能使图形看起来更平滑,更少像素化。如果放大到绘图并注意边缘有点模糊,可以看到这个。对于大多数绘图来说这是一件好事,但在你的情况下,它会导致模糊的边缘显示出来。

因此,要解决该问题,您可以通过调用noSmooth()函数来禁用抗锯齿:

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

另请注意,我使用255作为参数而不是-1。我不确定-1应该做什么颜色参数,因此为了安全起见,我会将其保持在0255之间。

但是你需要首先“删除”任何文字,这有点可疑。就像乔治的评论所说,你为什么不打电话给background()函数来清除旧框架呢?

这是一个小例子:

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