텍스트를 배경색으로 다시 쓰려고했지만 이전 텍스트의 가장자리 (윤곽선)가 화면에 남아 있습니다. 나는 이유를 모른다. 저를 도와주세요?처리 중, 이전 텍스트를 삭제하는 가장 빠른 방법입니다.
background(-1);
noLoop();
fill(#500F0F);
text("99", 300, 200);
fill(-1);
text("99",300, 200);
향후
텍스트를 배경색으로 다시 쓰려고했지만 이전 텍스트의 가장자리 (윤곽선)가 화면에 남아 있습니다. 나는 이유를 모른다. 저를 도와주세요?처리 중, 이전 텍스트를 삭제하는 가장 빠른 방법입니다.
background(-1);
noLoop();
fill(#500F0F);
text("99", 300, 200);
fill(-1);
text("99",300, 200);
향후
는 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
의 있었던 파라미터로
255
을 사용하고 있음을 알 수 있습니다.
-1
의 색상 매개 변수가 무엇인지 확실하지 않으므로 안전을 위해
0
과
255
사이로 유지해야합니다.
하지만 처음에는 모든 텍스트를 "삭제"해야합니다. George의 코멘트처럼, background()
함수를 호출하여 이전 프레임을 지우는 것이 어떻습니까?
여기에 작은 예입니다
void draw() {
background(64);
if (mousePressed) {
text("hello", 20, 40);
}
}
멋진 확장 답변 (+1) –
왜 당신은 단순히'배경()'와 전체 화면을 취소하지? –