2013-01-14 1 views
0

stackoverflow answer (live demo here)에있는 코드를 사용하여 내 캔버스에 팬 & 줌을 구현했습니다. 이것은 잘 작동하지만 문제가 있습니다.캔버스 크기를 조정할 때 팬 및 확대/축소 캔버스 문제

내 전체 페이지가 캔버스이므로 브라우저의 크기가 조정될 때 캔버스의 크기도 조정됩니다. 어떤 코드도없이 이것은 단지 끔찍한 캔버스 스트레치를 만듭니다. 브라우저 크기를 조정할 때 jQuery를 설정하여 캔버스의 크기를 조정하면 나중에 정말 이상한 패닝 문제가 발생합니다.

캔버스의 크기가 조정 된 후 팬 및 확대/축소가 계속 작동하도록하려면 어떤 변수를 업데이트하거나 업데이트해야하는지 잘 모르겠습니다. 귀하의 경우에는

+1

시도해 보셨습니까? – philipp

+0

몇 가지 변수를 변경해 보았지만 작동하지 않았고 잘못했다는 단서를 제공하지 못했습니다. – Chris

답변

0

당신은 줌 후 수행해야합니다

canvas.width = canvas.offsetWidth 
canvas.height = canvas.offsetHeight 

은 또한 당신이 언급 한 질문에서 library했다. 팬 및 줌 기능을 훨씬 쉽게 사용할 수 있습니다.

1

헤이 @ 크리스이 질문은 조금 오래된, 그러나 나는 같은 질문을 나 자신이 있고 이것은 내가 무슨 짓을 : @Phrogz의 기능 trackTransforms (CTX)에서

window.addEventListener('resize', function() { 
    var transform = context.getTransform(); 
    context.setTranslate(transform.e, transform.f); 
    context.setScale(transform.d, transform.d); 
} , false); 

내가 두 개의 추가 기능을 추가 :

ctx.setTranslate = function(dx, dy) { 
    translate.call(ctx, dx, dy); 
}; 
ctx.setScale = function(sx,sy) { 
    scale.call(ctx, sx, sy); 
}; 

캔버스는 모든 컨텍스트 변경 사항을 잃어 버리며 멋진 팬 줌 시스템을 만들었습니다. 이 작업은 변환을 기반으로 변경 사항을 다시 시도합니다.

+0

답변을 주셔서 감사합니다. 조금만 시도해 볼 시간은 없지만 확실히 좋아 보입니다. ! 나는 언제 돌아올거야 :) – Chris

관련 문제