在当前鼠标位置的画布内添加一个文本区域

2024-01-05

我想在画布上添加一些文本信息。当我在画布上单击鼠标时,它应该在当前鼠标位置显示一个文本区域。还应该可以选择、拖动和旋转文本区域。如何使用 HTML5 canvas 和 javascript 实现此功能?


下面的代码是由dreame4提供的,适合允许拖动(jsfiddle http://jsfiddle.net/ABY63/1/).

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然后看到这个帖子 https://stackoverflow.com/questions/3167928/drawing-rotated-text-on-a-html5-canvas关于如何旋转它。您需要明确跟踪文本区域的位置和旋转角度。 canvas 元素的事件侦听器必须检查鼠标是否在文本内(在这种情况下它开始拖动)或在外部(在这种情况下它创建/移动文本)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在当前鼠标位置的画布内添加一个文本区域 的相关文章

  • FormData 中的 Blob 为 null

    我正在尝试通过远程 API 通过 ajax 在 android 中发送创建的照片 我在用着相机图片背景 https github com an rahulpandey cordova plugin camerapicturebackgrou
  • 属性访问器(getter)的扩展运算符问题

    我很难理解为什么以下代码存在一些问题https jsfiddle net q4w6e3n3 3 https jsfiddle net q4w6e3n3 3 Note 所有示例均在 chrome 版本 52 0 2743 116 中进行测试
  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • 在 jQuery 中获取 CSS 规则的百分比值

    假设规则如下 largeField width 65 有没有办法以某种方式恢复 65 而不是像素值 Thanks EDIT 不幸的是 在我的例子中使用 DOM 方法是不可靠的 因为我有一个导入其他样式表的样式表 因此cssRules参数以以
  • jspm / jQuery / TypeScript - 模块“jquery”没有默认导出

    我正在尝试使用 TypeScript 和 jspm system js 来引导 Web 应用程序进行模块加载 我还没有走多远 安装 jspm 后 并使用它来安装 jQuery jspm install jquery 以及基础知识 main
  • 为什么这个 jquery 代码不能在黑莓上运行?

    我正在使用 jquerymobile 开发phonegap 应用程序 但在黑莓 9780 中它没有向我显示警报 我的代码是 document addEventListener deviceready run false function r
  • 更改 CSS 网格中的列顺序

    我正在研究 CSS 网格 当我在桌面尺寸上查看它时 min width 769px 我有单行三列 像这样的事情 col 1 col 2 col 3 我可以使用 css grid 移动列 以便我可以在移动布局上执行类似以下操作吗 col 1
  • Jquery 自动完成 - 预填充文本字段

    我有一个自动完成字段 改编自地理自动完成以查找地理位置 当用户从列表中选择位置时 我会获取纬度 经度和用于搜索的其他一些信息 然而 现在只有当用户实际从自动完成列表中进行选择时它才有效 而不是开始键入并单击 Enter 例如他们尚未从列表中
  • CSS:如何在模糊的背景上剪切文本?

    我想重新创建以下样式 我想出了以下内容 问题是剪切不会影响模糊滤镜 我不知道如何解决它 这是我的 HTML 代码 glass width 40 height 100 position absolute background rgba 255
  • Google 地图 InfoBubble PixelOffset(从标记上方的默认位置移动)

    我正在尝试实现一个自定义 infoBubble 它的框打开到标记的侧面 而不是顶部的默认位置 事实证明这比预期的要困难 使用普通的infoWindow 您可以使用pixelOffset 请参阅此处文档 https developers go
  • javascript/jquery 禁用点击提交按钮,防止重复提交

    所以我的提交按钮如下所示 a href img src images user create product png border 0 a 当我双击它时 显然会双重提交 问题是 我将信息保存在数据库中 因此那里会有重复的信息 我不想那样 这
  • 左对齐图像和居中文本在 div 内的同一级别?

    HTML br div class UpperTitle img src align left CableSolve Web Dashboard Version 0 1 1 div br CSS UpperTitle text align
  • 在多个数组中搜索字符串,然后设置 var - jQuery

    我正在寻找基于字符串存在于哪个数组中设置一个变量 例如 var primary red blue yellow var secondary orange purple green 然后检查 purple 并返回它在 secondary 数组
  • 在 jQuery DataTables 中的 Ajax 请求后在 td 中添加 html 元素

    我想在获得 ajax 响应后在 td 中添加 html 元素 结果将是这样的 tr td class mycus class span class mycus class2 XYZ span td td class mycus class
  • 如何仅突出显示嵌套表的最里面的表行?

    我有几个嵌套表 我想突出显示鼠标指针下方的最里面的行 我怎样才能做到这一点 一些提示 我使用嵌套表来显示递归表格数据 表可以嵌套 10 层 嵌套正如您所期望的那样 table tr td table tr td table tr td 可能
  • 获取 byte[]

    我有一个 html 画布 如下所示 output is a base64string of image data var oldImage new Image oldImage onload function var resizeRatio
  • tr 元素周围的边框不显示?

    Chrome Firefox 似乎不渲染边框tr 但如果选择器是 它会渲染边框table tr td 如何在 tr 上设置边框 我的尝试 不起作用 table tr border 1px solid black table tbody tr
  • 指定在任何 Jest 设置发生之前运行的代码

    tl dr 是 1 我怎样才能让Jest使用原生的require函数可以在任何地方加载我的测试中的所有模块 2 我将在哪里 如何进行修改 即替换为esm加载程序 https github com standard things esm ht
  • 如何从react-bootstrap复选框获取值/属性?

    我正在尝试使用反应引导复选框 https react bootstrap github io components html forms controls https react bootstrap github io components
  • 如何制作过期/签名视频嵌入网址

    我是新来的 正在学习网络开发等等 我只知道如何将我的视频嵌入网站中 任何菜鸟都可以轻松获得源代码 他们也可以嵌入它 但在许多网站中 视频 src 均使用重定向器链接进行编码 例如 它会在一段时间后过期 在本例中是一天 我了解到这是一个签名网

随机推荐

  • Cmake 无法找到 Python 库

    出现此错误 sudo unable to resolve host coderw ll Could NOT find PythonLibs missing PYTHON LIBRARIES PYTHON INCLUDE DIRS CMake
  • 升级到 R 2.15.2 无法加载 stats 包

    运行 Ubuntu 12 04 今天终于从 2 12 升级到 2 15 2 当我启动 R 时 出现此错误 Error in dyn load file DLLpath DLLpath unable to load shared object
  • 在Python中使用Hadoop处理大型csv文件

    我有一个巨大的 CSV 文件 想在 Amazon EMR python 上使用 Hadoop MapReduce 进行处理 该文件有 7 个字段 但是我只查看date and quantity field date receiptId pr
  • 如何在PHP中备份MySQL数据库?

    我对如何通过 PHP 备份 MySQL 数据库没有基本的了解 我遵循了一篇教程 但它并没有帮助我理解 有人可以解释如何从 PHP 创建 MySQL 备份吗 虽然您可以从 PHP 执行备份命令 但它们实际上与 PHP 没有任何关系 这都是关于
  • pandas 将两列分组并乘以另外两列

    我有一个像这样分组的数据框 price quantity vat date brand 20 Jun 13 Reebok 7 0 8 2 2 Adidas 12 0 3 3 8 Campus 2 5 38 4 2 Woodlands 23
  • 无法加载文件或程序集“System.Data.SQLite,版本=1.0.109.0 - 当我引用 1.0.109.1 时,为什么它会搜索版本 1.0.109.0

    我已经创建了新的ASP NET Core Web Application并使用ASP NET Core 2 1跨平台框架 接下来 我添加了System Data SQLite Core using Nuget manager 它是适用于 x
  • 使用 jQuery 在 div 之间转换

    我有三个divs 我有一个主 div 为用户提供了选择查看其他两个 div 的选项 如果我只使用文本并且不隐藏原始 div 它就可以工作 但我想使用图像映射并隐藏主 div 然后如果用户选择 他们可以单击后退按钮并让 div 重新出现 并且
  • Polars 扫描 s3 多部分镶木地板文件

    我在 s3 上有一个多部分分区的镶木地板 每个分区包含多个 parquet 文件 下面的代码缩小了单个分区的范围 该分区可能包含大约 30 个 parquet 文件 当我使用scan parquet在 s3 地址上 包括 parquet通配
  • Angular6获取方法响应“_isScalar”:false,“source”

    我正在尝试在 html 页面上显示 json 数据 服务器上的数据向我显示 json 数据 但是当我尝试在页面上显示它时 它给了我这个数据 isScalar false source isScalar false source isScal
  • 为什么文件在“查找结果 1”的第二个窗格中打开?

    我正在使用 vs net 2012 当我在整个解决方案中搜索字符串时 在查找结果窗格中 当我单击文件时 它会在底部窗格中打开该文件 它曾经在我所有其他源文件所在的顶部窗格中 正常 打开 我做了什么让 vs net 扰乱了我的思维 你可能do
  • 避免 Scala 中冗余的泛型参数

    所以这是一个相当直接的端口这个Java问题 https stackoverflow com questions 9684186 redundant generic parameters到斯卡拉 我们有一堆采用通用参数的特征 如下所示 tra
  • javascript 参数是否延迟计算?

    我制作了一个依赖注入模块 它使用了我发现的默认参数的 hack function x SomeDependency SomeDependency 未定义 但我可以解析它的 toString 对于类构造函数 箭头函数和简洁的对象方法也是如此
  • 多线程应用程序中的 WCF 代理单例

    我刚刚继承了一个在 net 4 上运行的 asp net mvc 3 站点 该站点大量使用对非常慢的外部服务的 WCF 调用 该网站尚未上线 我发现的一段奇怪的代码是围绕 WCF 客户端代理使用的 为整个 aspnet 应用程序创建一个实例
  • 如何告诉作曲家使用我的叉子的分支?

    在 symfony2 项目中 我使用 jms serializer bundle 并且它的依赖项之一存在问题 即jms metadata图书馆 我已经分叉了元数据库并在bugfix doctrine proxy branch 现在我想知道如
  • cockplot:如何通过修改轴限制来自定义主面板和边缘图之间的间隙?

    这是 ClausWilke 提供的解决方案之一的后续问题 see post https stackoverflow com questions 47542849 marginal plots using axis canvas in cow
  • Django 1.3:测试期间发件箱为空

    也许我不明白发件箱是如何工作的 但从文档中我了解到它只是在测试期间捕获所有外发邮件 我使用新应用程序创建了一个新项目 并添加了以下代码 from django test import TestCase from django core ma
  • 什么是 Node.js? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JavaScript 中的 window.location.href 和 window.open () 方法

    有什么区别window location href and window open JavaScript 中的方法 window location href is not一个方法 它是一个属性 可以告诉您浏览器当前的 URL 位置 更改该属
  • 公共资源、火花与冲突

    Using this http odetocode com blogs scott archive 2009 07 15 resource files and asp net mvc projects aspx来生成我的资源 问题是 当尝试
  • 在当前鼠标位置的画布内添加一个文本区域

    我想在画布上添加一些文本信息 当我在画布上单击鼠标时 它应该在当前鼠标位置显示一个文本区域 还应该可以选择 拖动和旋转文本区域 如何使用 HTML5 canvas 和 javascript 实现此功能 下面的代码是由dreame4提供的 适