2013-08-27 1 views
1

오늘은 간단한 캔버스 작업을 시도하면서 많은 시간을 보냈지만 (나는 꽤 오랫동안 연주하지 못했지만) 선은 올바른 위치로 그리지 않았습니다. 자바 스크립트 및/또는 Canvas라는 것이 내 수학이 아니라 엉망인 것으로 밝혀졌습니다. 2 차원 캔버스 상황을 감안할 때, 다음왜 moveTo (0, 0); lineTo (X, X); 45도 선 그리시겠습니까?

context.moveTo(0, 0); 
context.lineTo(50, 50); 
context.stroke(); 

가 ... 예상대로 30 ° 정도가 아니라 45 ° 것으로 보인다 선을 그립니다. Here's a jsFiddle.

캔버스/컨텍스트가 정사각형이 아닌 픽셀을 사용하는 경우에만 이것이 의미가 있습니다. 실제로 그런 경우입니까? 누구의 밝은 아이디어가 될 수 있겠습니까? 캔버스에 사각형 픽셀을 사용하도록하여 수학을보다 쉽게 ​​만들 수있는 방법이 있습니까?

+0

'45도 각도로 그리지 않음'으로 '직각을 그리지 않음'으로 변경하십시오. 이등변은 또한 그것이 당신이 생각한다고 생각하는 것을 의미하지는 않습니다. 왜 그것이 분명히 [나쁘게 행동하는] (http://jsfiddle.net/t6HaC/10/)인지 모르겠지만, 미안합니다. –

+0

충분합니다. 지오메트리 클래스가 생겨서 꽤 오랜 시간이 걸렸습니다. –

답변

5

CSS로 캔버스의 크기를 조정하는 것과 같은 소리가납니다.

CSS에서 크기 조정 실제로는이 확장 된 그림이됩니다. 크기를 조정해야하는 경우

,이 "픽셀을 스트레칭"하지 않습니다

var canvas=document.getElementById("myCanvas"); 
canvas.width=500; 
canvas.height=300; 
+0

''을''처럼 작동하는 것으로 생각하면 거의 맞는 것 같습니다. 거의. 아주 이상한 행동. –

1

마르크가 완전히 권리가 있습니다. 귀하의 예에서는 기본 크기가 300x150 픽셀 인 HTML에 캔버스를 설정했습니다. 그런 다음 CSS를 통해 크기를 설정하면 크기가 조정되지 않고 캔버스가 늘어납니다. markE 솔루션의 대안은 명시된 크기로 캔버스를 설정하는 것입니다.

<canvas id="the-canvas" width="300" height="300"></canvas> 
+0

'width = "300px"가 올바른지, width = "300"'이 아닌지? –

+1

Canvas는 픽셀 크기 만 취할 수 있으므로'px '접미사는 작동하지 않습니다. Garret 일종의 단순한 값만 사용하십시오. (너비 = "300"등). – K3N

+0

잘 잡혔습니다! 내 대답을 편집했습니다. – KaliedaRik

관련 문제