2011-08-27 4 views
2

캔버스에 흰색 텍스트가 있습니다. 나는 천천히 그리고 매끄럽게 텍스트를 다른 색상 (빨간색)으로 왼쪽에서 오른쪽으로 채울 수 있기를 원합니다. 이것을 할 수있는 방법이 있습니까? 때때로 문자는 분수에 흰색이고 반대쪽에는 빨간색이됩니다.html5 캔버스에서 텍스트를 천천히 채우는 방법

"색상"이라는 단어를 사용한 예.

"Col"은 빨간색입니다. 다음 "o"는 빨간색 (왼쪽)이 25 %이고 흰색 (오른쪽)이 75 %입니다. "r"은 완전 흰색입니다. 모든 도움

업데이트

감사합니다. clip 객체 앞에 ctx.beginPath()를 추가하면 더 잘 작동하는 것으로 나타났습니다.

저는 약간의 아이디어를 추가하고 현재 프로젝트에서 제대로 작동하는 작은 js 개체를 만들었습니다. 가장 우아한 js가 아닐지도 모르지만 나중에이 작업을 원하는 다른 사람을 돕기를 바랍니다. 필자가 텍스트가 채워지기를 시작할 때 텍스트의 크기가 변하는 것을 확인한 약간의 문제가 있습니다. 그 이유는 확실하지 않습니다. http://jsfiddle.net/WRAFA/4/

답변

3

복합 작업 소스 인으로이 작업을 수행 할 수 있습니다. 복합 작업 소스를 사용하여 배경색 (흰색)으로 텍스트를 처음 그린 다음 그 위에 텍스트와 사각형 사이의 유일한 교차점에 색칠 된 채색 선을 그립니다. 나는 작은 예제를 만들었습니다 jsfiddle

+0

이것은 내가 필요한 거의 것입니다! 유일한 것은 내가 배경을 검은 색으로 변경하고 텍스트를 흰색으로 유지하면 텍스트가 보이지 않는 것입니다. 텍스트를 표시 한 다음 채울 수있는 방법이 있습니까? – user915134

+1

나는 약간의 조정을했고 성공했다고 생각합니다. 여기에 넣은 것에 대한 편집 된 링크가 있습니다. (아직 편집 권한이 없습니다.) [link] (http://jsfiddle.net/MBSr2/20/). – user915134

2

리차드의 바이올린 수정에 대한 좋은 직장. 나는 몇 가지 개선을했습니다.

  1. 검은 색 캔버스 배경에 흰색 텍스트를 요청했습니다.
  2. setInterval의 사용은 권장하지 않습니다. 당신은 무승부를 영원히 그리고 영원히 계속하고 있습니다. 나는 캔버스의 가장자리에 도착하자마자 draw 이벤트를 멈추도록 setTimeout을 사용하기 위해 바이올린을 고쳤습니다.

조정 된 바이올린은 내가하지만, 추천 http://jsfiddle.net/d4Jef/1/

한 가지이다. 합성을 사용하는 대신 클리핑 영역을 사용하여 텍스트를 작성해야합니다. source-in 합성 문제는 텍스트가 불투명 한 픽셀 이미지로 작성된 경우이를 통해 직사각형을 채우면 배경이 날아갈 수 있습니다. 캔버스에 다른 것을 가지고 있지 않았기 때문에 여기에서 벗어났습니다. 을 제외하고는 텍스트를 제외하고 말입니다. 따라서 클리핑 영역으로 이동하는 것이 좋습니다. http://jsfiddle.net/5ZgNz/2/

참고이 방법은 일반적으로 작동하는 강조하기 위해 추가로 녹색 사각형의 사용 : 여기

는 클리핑 접근 버전입니다.

+0

코드를 짧게 유지하기 위해 setInterval을 사용했습니다. setTimeout을 사용하면 훨씬 편리합니다. 나는 단지 내 생각을 보여주고 싶었다. 다른 복합 연산 대신 클리핑 영역을 사용하는 것이 훨씬 낫습니다. 모든 복합 연산 (기본 소스 오버를 제외하고)은 매우 느립니다. – Rickard

+0

확실합니다. :-) 나는 OP에게 좋은 행동으로 몇 가지 추가 지침을 제공했습니다. –

관련 문제