JavaScript의 높이와 너비로 설정된 HTML 캔버스가 있습니다. 그러나 창 모양이 바뀌면 페이지를 새로 고치지 않으면 캔버스 크기가 그대로 유지됩니다.캔버스 크기를 창의 모양으로 바꿉니다.
답변
윈도우 크기가 변경되었을 때 캔버스의 크기를 프로그래밍 방식으로 설정하려면 Javascript 윈도우 크기 조정 수신기를 만들고 싶을 것입니다. 만드는 당신은 단지 캔버스의 width
및 height
을 조정해야합니다
window.onresize = function(event) {
var canvas = document.getElementById('canvas');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
redraw(); // you must handle the redraw yourself
};
, 반드시 사용자 지정 방법 redraw()
.
이 기본 코드는 JSFiddle에서 확인할 수 있습니다. 참고로
:
당신은 예상대로 작동 캔버스 요소의 CSS height
및 width
을 설정할 수 있습니다.
canvas {
width: 50%;
}
하고의 문제는 캔버스에 그려진, 이것은 어떤 왜곡을 만들 수 있습니다 width
및 height
모두를 지정하는 경우이다. 그러나 하나의 속성 만 지정하면 캔버스가 비례 적으로 확장됩니다. canvas
의 사용 사례에 따라 문제가 될 수 있습니다.
NB을 : 전 그 내용을 다시 그려 내지 않고 CSS 스케일을 사용하여 캔버스를 다시 조정합니다. 아마도 이것은 가난 해 보일 것입니다. – Alnitak
Alnitak과 동의 함 ... CSS로 크기를 조정하면 원본 캔버스와 동일한 종횡비로 크기가 조정되지 않는 한 캔바스의 내용이 왜곡되므로보기가 좋지 않습니다. ... 약 2 배 이상 크기를 조정하면 캔버스 내용이 픽셀 화됩니다. 더 좋은 방법은 캔버스 요소 자체의 크기를 조정하는 것입니다 : canvas.width = newWidth, 등. 캔버스 요소의 크기를 조정하면 해당 내용이 지워 지므로 해당 내용을 다시 그려야합니다. – markE
캔버스의 크기를 동적으로 조정하려면 이벤트 수신기를 추가하여 창 크기가 조정되었는지 확인하십시오. 그런 다음 캔버스를 다시 그릴 수 있습니다. 이 작업을 수행하는 방법에 대한 자세한 내용은
function initialize() {
// Register an event listener to
// call the resizeCanvas() function each time
// the window is resized.
window.addEventListener('resize', resizeCanvas, false);
// Draw canvas border for the first time.
resizeCanvas();
}
// Display custom canvas.
// In this case it's a blue, 5 pixel border that
// resizes along with the browser window.
function redraw() {
context.strokeStyle = 'blue';
context.lineWidth = '5';
context.strokeRect(0, 0, window.innerWidth, window.innerHeight);
}
// Runs each time the DOM window resize event fires.
// Resets the canvas dimensions to match window,
// then draws the new borders accordingly.
function resizeCanvas() {
htmlCanvas.width = window.innerWidth;
htmlCanvas.height = window.innerHeight;
redraw();
}
, 여기에 모든 단계를 밖으로 나열하는 우수 블로그 게시물입니다 - 그래서 http://htmlcheats.com/html/resize-the-html5-canvas-dyamically/
캔버스의 크기를 변경하면 캔버스가 자동으로 지워지기 때문에 _ 캔버스를 다시 그립니다. – Alnitak
- 1. 메인 창의 캔버스 크기를 동적으로 조정합니까?
- 2. 이미지가 캔버스 모양으로 그려 짐
- 3. 애플릿 뷰어 창의 크기를 조정할 때 캔버스 크기가 변경되지 않습니다.
- 4. 창의 크기를 얻는 방법
- 5. 창의 크기를 조정하려면 어떻게해야합니까?
- 6. 원하는 클라이언트 영역 크기를 기반으로 WPF 창의 크기를 어떻게 설정합니까?
- 7. html5 캔버스 라인을 원으로 바꿉니다.
- 8. 브라우저 창의 크기를 조정할 때
- 9. 프로그램이 작동하도록 창의 크기를 조절해야합니다.
- 10. Xaml에서 창의 크기를 동적으로 조정
- 11. CSS에서 창의 크기를 조정하는 방법
- 12. 캔버스 내용의 크기를 바꾸면
- 13. 다음의 크기를 조정 캔버스
- 14. "Button"모양으로 라디오 버튼의 크기를 조절하는 방법
- 15. HTML5 캔버스 - 브라우저 창의 전체 범위
- 16. 사용자가 크기를 조정할 수있는 캔버스 창을 브라우저 창의 크기를 조절할 때 크기를 줄이거 나 늘릴 수있는 방법
- 17. 이미지를 캔버스 내부로 드래그하여 위치를 바꿉니다.
- 18. 캔버스 크기를 설정하는 방법은 무엇입니까?
- 19. Android에서는 캔버스 크기를 어떻게 설정합니까?
- 20. 브라우저 창의 크기를 조정할 때 CSS의 사다리꼴 크기를 조정하는 방법
- 21. vb.net에서 창의 크기로 단추 크기를 변경하십시오.
- 22. 창의 크기를 줄이려면 div를 얻으려고 시도하십시오.
- 23. 창의 크기를 조정할 때 div의 종횡비 유지
- 24. Flash 객체를 채우기 창의 크기를 동적으로 조정
- 25. NSWorkSpace에서 시작한 창의 크기를 줄이는 방법이 있습니까?
- 26. GraphicsDevice없이 xna 창의 크기를 조정하려면 어떻게해야합니까?
- 27. 창의 크기 조정 픽셀 크기를 얻는 방법
- 28. 브라우저 창의 클라이언트 크기를 확인하는 방법은 무엇입니까?
- 29. 주 창의 이미지 리소스 크기를 조정하는 방법
- 30. Excel 창의 크기를 어떻게 설정할 수 있습니까?
, 음, 함정 윈도우의'resize' 이벤트 .... – Alnitak