我尝试使用背景颜色重写文本,但旧文本的边缘(轮廓)仍保留在屏幕上。我不知道为什么。你能帮我吗?
background(-1);
noLoop();
fill(#500F0F);
text("99", 300, 200);
fill(-1);
text("99",300, 200);
答案 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
应该做什么颜色参数,因此为了安全起见,我会将其保持在0
和255
之间。
但是你需要首先“删除”任何文字,这有点可疑。就像乔治的评论所说,你为什么不打电话给background()
函数来清除旧框架呢?
这是一个小例子:
void draw() {
background(64);
if (mousePressed) {
text("hello", 20, 40);
}
}