2015-01-03 2 views

답변

0

윈도우 크기가 변경되었을 때 캔버스의 크기를 프로그래밍 방식으로 설정하려면 Javascript 윈도우 크기 조정 수신기를 만들고 싶을 것입니다. 만드는 당신은 단지 캔버스의 widthheight을 조정해야합니다

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 heightwidth을 설정할 수 있습니다.

canvas { 
    width: 50%; 
} 

하고의 문제는 캔버스에 그려진, 이것은 어떤 왜곡을 만들 수 있습니다 widthheight 모두를 지정하는 경우이다. 그러나 하나의 속성 만 지정하면 캔버스가 비례 적으로 확장됩니다. canvas의 사용 사례에 따라 문제가 될 수 있습니다.

+1

NB을 : 전 그 내용을 다시 그려 내지 않고 CSS 스케일을 사용하여 캔버스를 다시 조정합니다. 아마도 이것은 가난 해 보일 것입니다. – Alnitak

+0

Alnitak과 동의 함 ... CSS로 크기를 조정하면 원본 캔버스와 동일한 종횡비로 크기가 조정되지 않는 한 캔바스의 내용이 왜곡되므로보기가 좋지 않습니다. ... 약 2 배 이상 크기를 조정하면 캔버스 내용이 픽셀 화됩니다. 더 좋은 방법은 캔버스 요소 자체의 크기를 조정하는 것입니다 : canvas.width = newWidth, 등. 캔버스 요소의 크기를 조정하면 해당 내용이 지워 지므로 해당 내용을 다시 그려야합니다. – markE

0

캔버스의 크기를 동적으로 조정하려면 이벤트 수신기를 추가하여 창 크기가 조정되었는지 확인하십시오. 그런 다음 캔버스를 다시 그릴 수 있습니다. 이 작업을 수행하는 방법에 대한 자세한 내용은

 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/

+0

캔버스의 크기를 변경하면 캔버스가 자동으로 지워지기 때문에 _ 캔버스를 다시 그립니다. – Alnitak

관련 문제