캔버스에 텍스트 정보를 추가하고 싶습니다. 캔버스의 한 지점을 마우스로 클릭하면 현재 마우스 위치에 텍스트 영역이 표시됩니다. 그것은 또한 선택, 드래그 앤 텍스트 영역을 회전 가능해야합니다. 어떻게 HTML5 캔버스와 자바 스크립트를 사용 하여이 기능을 얻을 수 있습니까? 좌표 캔버스와 디스플레이 텍스트 영역을 클릭 처리 코드현재 마우스 위치에서 캔버스 내부에 Textarea 추가
3
A
답변
4
다음 코드는 끌기를 허용하도록 dreame4에서 제공 한 것입니다 (jsfiddle).
var canvas = document.getElementById("c"),
textarea = null;
function mouseDownOnTextarea(e) {
var x = textarea.offsetLeft - e.clientX,
y = textarea.offsetTop - e.clientY;
function drag(e) {
textarea.style.left = e.clientX + x + 'px';
textarea.style.top = e.clientY + y + 'px';
}
function stopDrag() {
document.removeEventListener('mousemove', drag);
document.removeEventListener('mouseup', stopDrag);
}
document.addEventListener('mousemove', drag);
document.addEventListener('mouseup', stopDrag);
}
canvas.addEventListener('click', function(e) {
if (!textarea) {
textarea = document.createElement('textarea');
textarea.className = 'info';
textarea.addEventListener('mousedown', mouseDownOnTextarea);
document.body.appendChild(textarea);
}
var x = e.clientX - canvas.offsetLeft,
y = e.clientY - canvas.offsetTop;
textarea.value = "x: " + x + " y: " + y;
textarea.style.top = e.clientY + 'px';
textarea.style.left = e.clientX + 'px';
}, false);
그러나, 회전은 매우 다른 더 복잡한 솔루션이 필요합니다 -
context.fillText
를 사용하여 캔버스에서 텍스트를 확인하고 다음을 회전하는 방법에 대한
this post를 참조하십시오. 텍스트 영역의 회전 위치와 각도를 명시 적으로 추적해야합니다. 캔버스 요소의 이벤트 리스너는 마우스가 텍스트 내에 있는지 여부를 확인해야합니다.이 경우 텍스트가 드래그를 시작하거나 외부에서 텍스트를 작성/이동합니다.
1
예 :
HTML
<canvas id="c" width="200" height="200"></canvas>
JS는 :
는var canvas = document.getElementById("c"),
textarea = null;
canvas.addEventListener('click', function(e) {
if(!textarea) {
textarea = document.createElement('textarea');
textarea.className = 'info';
document.body.appendChild(textarea);
}
var x = e.clientX - canvas.offsetLeft,
y = e.clientY - canvas.offsetTop;
textarea.value = "x: " + x + " y: " + y;
textarea.style.top = e.clientY + 'px';
textarea.style.left = e.clientX + 'px';
}, false);
나머지 기능은 더 복잡하다. 아마도 jQuery UI과 같은 외부 라이브러리를 사용하고 싶을 것입니다.
EDITED : 스타일에 'px'가 없습니다. 스튜어트에게 감사드립니다.
관련 문제
- 1. 캔버스 내부에 HTML 캔버스 렌더링
- 2. 캐럿 위치에서 텍스트 추출 textarea
- 3. HTML을 캔버스 내부에 렌더링했습니다
- 4. HTML5 캔버스 - 마우스 클릭시 마우스 좌표에서 이미지 추가
- 5. Javascript가 마우스 위치에서 드래그합니까?
- 6. 현재 마우스 위치에서 그림 상자를 확대/축소 하시겠습니까?
- 7. 캔버스 요소 내부에 입력 양식
- 8. 마우스 위치에서 X 좌표 설정
- 9. HTML5 캔버스 마우스
- 10. 마우스 클릭 위치에서 위치 결정
- 11. 마우스 위치에서 좌표를 변환하는 방법
- 12. 마우스 클릭시 Textarea 높이를 변경하는 방법
- 13. layer.transform을 설정하면 끝 위치에서 레이어가 깜박이고 현재 위치에서 애니메이션됩니다.
- 14. 캔버스 마우스 이벤트 및 포커스
- 15. HTML5 캔버스 마우스 휠 이벤트
- 16. 퍼펙 팅 캔버스 마우스 좌표
- 17. vim에서 현재 위치에서 파일 편집
- 18. 현재 위치에서 Plist 파일까지의 거리
- 19. iPhone이 현재 위치에서 자막으로 이동합니다.
- 20. 현재 위치에서 다른 위치까지의 거리
- 21. 현재 위치에서 멈춤 - iphone sdk
- 22. 마우스 위치에 타원 추가?
- 23. 상대 레이아웃에 캔버스 추가
- 24. LinearLayout 내부에 ImageView 추가
- 25. 목록 내부에 목록 추가
- 26. 그룹 내부에 연락처 추가
- 27. jQuery textarea 개행 동작 추가
- 28. 다른 클래스의 Textarea 결과 추가
- 29. WPF 마우스 위치에서 시각적으로 가져 오기
- 30. 현재 마우스 좌표 얻기
일부 코드를 표시하십시오. 너는 그 훈련을 안다. – DrinkJavaCodeJava