큰 질문입니다! translate
rotate
및 scale
은 모두 현재 매트릭스에서 작동하는 함수입니다. 이것은 당신에게 많은 옵션을 제공합니다. 아마 가장 간단한 일은 컨텍스트 매트릭스 이제 행렬이되기 전에 얼마나로 복귀, 복원 호출 한 후
ctx.save();
ctx.translate (to the center);
ctx.rotate (do rotation);
//Draw rotated stuff
ctx.restore();
//Draw non-rotated stuff
에 복원 저장하는 것입니다 마지막으로 저장 - OpenGL을, 이것은 당신이 실제로 스택이며, 많은 컨텍스트를 밀어 넣을 수 있지만 webgl이 지원하는지 확실하지 않습니다.
이 링크는 또한 도움이 될 수있다 :이 도움이 https://developer.mozilla.org/en/drawing_graphics_with_canvas
희망.
업데이트 :
예. 좋아, 그래서 너는 뭔가를 오해하고있다. 번역 및 회전은 전에 도면에 적용됩니다. 이것은 복잡한 수학이 많기 때문에 실제로이 질문의 범위를 벗어납니다. 따라서 캔버스 부분을 한 방향으로 회전하고 다른 부분을 다른 방향으로 회전하려면 먼저 save
을 입력 한 다음 변환을 적용하고 그림의 첫 번째 부분을 수행 한 다음 restore
으로 돌아가서 변환 된 상태. 어느 시점에서, 당신은 반복 할 수 있습니다. 따라서 예를 들어, 당신은이 작업을 수행 할 수 있습니다
ctx.save();
ctx.translate (x_center, y_center);
ctx.rotate (90);
//Draw your rotated stuff starting at the center
ctx.translate (-x_center, -y_center);
//Draw your main frame stuff that is all rotated around the center
ctx.restore();
ctx.save();
ctx.rotate (90);
//Draw your text which is rotated around the top-left corner
ctx.restore();
을 이러한 방법으로, 당신은 1 개 그리기 기능을 가지고 있고, 당신은 단순히 설치 컨텍스트는 다른 구성 요소를 그리기 전에.
Mh,하지만 내가 그리려는 모든 라인이 첫 번째'ctx.translate (중심으로)'에 의해 번역되는 것은 아닙니다. 그것이 내가 알아 내지 못하는 것입니다. 회전이 중심을 중심으로 회전하기를 원하지만, 회전 된 선은 이후 왼쪽 상단 모서리에서 그립니다. – enyo
나는 내 대답을 업데이트했습니다 – idbentley
도와 주셔서 감사합니다. idbentley,하지만이 번역도 회전되지 않습니까? – enyo