我想在畫布上添加一些文字信息。當我點擊畫布上的鼠標時,它應該在當前鼠標位置顯示一個文本區域。應該也可以選擇,拖動和旋轉textarea.How可以使用HTML5 canvas和javascript實現這個功能嗎?的代碼在當前鼠標位置在畫布內添加一個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。您需要明確跟蹤文本區域的位置和旋轉角度。 canvas元素的事件偵聽器將不得不檢查鼠標是否在文本中,在這種情況下,它會開始拖動,或者在外部,在這種情況下,它會創建/移動文本。
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。
編輯:在樣式中缺少'px'。謝謝Stuart。
相關問題
- 1. Android。在當前鼠標位置的畫布內添加一個Textarea?
- 2. 在畫布內獲取鼠標位置
- 3. 鼠標在畫布上的位置
- 4. 在當前位置添加標記
- 5. 偵測鼠標在畫布內的點擊位置
- 6. 使用javascript在畫布內獲取鼠標位置
- 7. 鼠標位置與HTML畫布並不一致ondrag當
- 8. 在畫布中添加橢圓位置
- 9. 將畫布縮放到鼠標位置
- 10. 在筆畫畫布中獲取鼠標位置
- 11. HTML5畫布 - 在鼠標點擊時添加圖像,在鼠標座標
- 12. 添加鼠標事件畫布繪圖
- 13. 獲取當前鼠標位置
- 14. 鼠標點擊我的畫布上,鼠標懸停在畫布的一部分,鼠標移出畫布
- 15. 在當前觸摸位置添加一個指示器?
- 16. 調整畫布大小後,在畫布上獲取鼠標位置的顏色
- 17. 如何在當前鼠標位置設置工具提示?
- 18. 在CSS縮放畫布中獲取正確的鼠標位置
- 19. 在畫布中獲取鼠標位置(java)
- 20. z-index = -1時,在畫布元素中獲取鼠標位置
- 21. 使用Javascript在畫布上收集鼠標位置
- 22. 在matplotlib畫布上檢測相對鼠標位置
- 23. 獲取在畫布上鼠標的位置與透明背景
- 24. 移動後在畫布中獲取鼠標位置
- 25. 在WPF/C上的旋轉畫布上獲取鼠標位置#
- 26. 軌跡鼠標在畫布上打孔的位置HTML5
- 27. 在HTML5畫布上保存鼠標的位置和時間ipad
- 28. 當畫布大小相對時,在Canvas上獲取正確的鼠標位置?
- 29. 如何在flex4的textArea中找到當前光標位置?
- 30. 檢測鼠標位置是否在一組位置規則內?
請顯示一些代碼。你知道該怎麼做。 – DrinkJavaCodeJava