캔버스를 처음부터 시작하면 context.save()
변경하기 전에 사용할 수 있고 context.restore()
나중에 복구하는 데 사용할 수 있다는 것을 알고 있습니다 . 내 질문은 : 명령을 사용하기 전에 이미 수정 된 캔버스를 얻는 경우 context.save()
전체 컨텍스트를 기본값으로 재설정하려면 어떻게해야합니까?
그것은 매우 불행한 일이지만 실제로 클리핑 API가 손상되어 완벽하게 할 수는 없습니다.
명백한 모든 다른 속성은 어떤 절대 값으로 설정할 수 fill/strokeStyle
, font
, shadowXXX
등 심지어 변환 매트릭스 중 어느 하나와 행렬에 절대적으로 설정할 수 resetTransform()
또는 setTransform(1,0,0,1,0,0)
.
절대 설정할 수없는 것은 클리핑 영역입니다. 이 경우 이니셜이 있어야합니다 save()
(또는 내 setClip
polyfill을 설치하려면).
불행히도 여러 번 요청되었지만 일부 구현자는 setClip()
사양에 a 를 포함하는 것에 대해 진정으로 반대 합니다.
따라서 초기 호출없이 컨텍스트를 완전히 재설정하는 유일한 방법 은 요소 save()
의 width
또는 height
속성 을 재설정하는 것 <canvas>
입니다. 그러나 이렇게하면 컨텍스트에서 현재 드로잉도 지워지고 앱의 메모리 사용량이 종료됩니다. 적어도 Chrome에서는 그렇게 할 때 새 드로잉 버퍼가 할당됩니다. 즉, GC가 큰 캔버스에서 결과적으로 크기가 될 수있는 이전 버퍼. 앞으로 우리는 reset()
이 재 할당 문제를 피해야 하는 메서드 를 호출 할 수 있어야 하지만 어쨌든 드로잉 버퍼를 지울 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다