HTML Canvas - 绘制弯曲箭头

2023-11-24

我正在尝试在 html 画布中绘制弯曲的箭头。我画一条曲线没有问题,但我不知道如何放置>在线的末端(方向)。

ctx.beginPath();
  ctx.fillStyle = "rgba(55, 217, 56,"+ opacity +")";
  ctx.moveTo(this.fromX,this.fromY);
  ctx.quadraticCurveTo(this.controlX, this.controlY, this.toX, this.toY);
ctx.stroke();

我的想法是在末端取一小部分线并画一个三角形。 如何获取直线上一点的坐标?

下面是为了更好地理解的图片。

Curve with arrow


由于您使用的是二次曲线,因此您知道有两个点构成一条指向箭头“方向”的线:

enter image description here

因此,只要扔掉一点点三角函数,你就有了一个解决方案。这是一个可以为您完成此操作的通用函数:

http://jsfiddle.net/SguzM/

function drawArrowhead(locx, locy, angle, sizex, sizey) {
    var hx = sizex / 2;
    var hy = sizey / 2;

    ctx.translate((locx ), (locy));
    ctx.rotate(angle);
    ctx.translate(-hx,-hy);

    ctx.beginPath();
    ctx.moveTo(0,0);
    ctx.lineTo(0,1*sizey);    
    ctx.lineTo(1*sizex,1*hy);
    ctx.closePath();
    ctx.fill();

    ctx.translate(hx,hy);
    ctx.rotate(-angle);
    ctx.translate(-locx,-locy);
}        

// returns radians
function findAngle(sx, sy, ex, ey) {
    // make sx and sy at the zero point
    return Math.atan2((ey - sy), (ex - sx));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML Canvas - 绘制弯曲箭头 的相关文章

  • 如何覆盖 bootstrap 表 td 样式?

    我正在使用 Bootstrap 3 3我有一个 HTML 代码如下 div table class table table striped tr td 03 td td 04 td td 05 td td 06 td td 07 td td
  • 如何在php中使用一张图像绘制形状

    我需要使用图像的一部分来创建帧图像 例如 用户将从后端上传图像片段 现在我需要根据前端用户的要求在前端创建一个框架 用户将选择框架的高度和宽度 然后他将选择该图像片段 如下所示 我没有办法做到这一点 我尝试通过 css 和 html can
  • 用于渲染 html 子集的 Django templatetag

    我有一些 html 在本例中是通过 TinyMCE 创建的 我想将其添加到页面中 但是 出于安全原因 我不想只打印用户输入的所有内容 有谁知道模板标签 最好是过滤器 只允许呈现 html 的安全子集 我意识到 Markdown 和其他人就是
  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • 水平对齐输入字段

    我正在尝试获取一个输入字段 并且它与同一水平线上的关联提交按钮相关 但事实证明这是一个挑战 这是我的代码
  • 使用 VBA 通过 Access 导航网页/操作 IE

    你好 StackOverflow 社区 我有一个关于使用 Access VBA 操作 IE 的问题 本质上 我正在尝试编写代码 使用 IE 打开特定网页 在该页面中搜索特定链接 目标链接的名称将取决于用户的情况 通过以编程方式单击该链接导航
  • 如何在文本区域中使用除“文本插入符号”之外的透明字体?

    我有一个简单的文本区域 我需要制作透明字母 同时允许文本插入符可见 当我应用以下规则时 我会得到隐形插入符 textarea background transparent opacity 0 当我键入不可见文本时 我需要看到文本插入符移动
  • CSS设置默认滚动位置

    有没有办法将滚动位置设置为默认值 我知道如何在 javascript 中做到这一点 例如使用 jquery div divWithScroll attr scrollTop 200 但我只想用CSS来做 我不知道是否可行 不 CSS 中没有
  • 使用 jQuery 清除 IMG

    我正在尝试从 a 中删除加载的图像 img 元素 但清除或删除 src 不会执行此操作 该怎么办 HTML img src https www google com images srpr logo3w png JQUERY img att
  • 如何通过单击图像预览上的“x”从文件输入中删除图像?

    我目前有一个文件输入 一旦用户上传图像 就会显示图像预览 在图像预览上 有一个 x 可以从列表中删除图像预览 单击此 x 后 有什么方法可以从输入中的文件集中删除图像吗
  • 将 visjs 网络导出为 jpeg/png 图像

    我正在研究 Angular vis js Vis js 在画布上工作 用于创建节点和节点之间的链接 有没有办法从 visj s 画布中获取图像 jpeg png 看看这个片段 我想它会对你有所帮助 在 vis 画布下 您将看到一个 PNG
  • HTML5 历史 API

    我如何使用 HTML5 历史 api 我确实经历过https developer mozilla org en DOM Manipulated the browser history https developer mozilla org
  • 来自 JSON 的 Angular 8 动态表单

    我正在尝试从 JSON 模式递归生成动态表单 但我正在努力解决找不到表单控件的问题 这是代码示例 我收到这个错误 错误错误 找不到名称为 createdAt 的控件 我尝试了不同的方法 但仍然存在问题 我知道我错过了一些东西 所以请帮忙 任
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 悬停时为 SVG 制作动画

    我正在尝试在悬停时为 SVG 文件设置动画 默认情况下 它可以使用 svg 函数实现出色的动画效果 例如
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react

随机推荐

  • 对象属性赋值与解构?

    我想用ES6 解构分配对象的属性 但无法弄清楚语法 var dst already in existence with its own props methods etc var src a foo b bar c baz dst a sr
  • 图像变换会产生红色图像?

    我正在尝试通过水平翻转图像并调整其大小来转换图像 问题是 当转换完成后 图片的颜色都很奇怪 它已经变成了微红色调 是否有可能以某种方式解决这个问题 我想我在某处读到这可能是 AWT 库中的一些错误 但我不确定 这是代码 import jav
  • 模板内类型名分配的目的是什么

    我遇到过这段代码 我试图包含所有详细信息 以防我遗漏某些内容 template lt typename TYPE TYPE with an arbitrarily long name typename KIND KIND with an a
  • 斯康斯。使用 Glob 进行递归

    我使用 scons 几天了 有点困惑 为什么没有内置工具用于从给定根开始递归构建源 让我解释 我有这样的源码配置 src Core folder1 folder2 subfolder2 1 Std folder1 等等 这棵树可能更深 现在
  • mysql 中的文本索引与整数索引

    无论如何 我一直尝试在表上使用整数主键 但现在我怀疑这是否总是必要的 假设我有一个产品表 每个产品都有一个全球唯一的 SKU 编号 这将是一串 8 16 个字符的字符串 为什么不把这个作为PK呢 通常 我会将此字段设为唯一索引 但随后使用自
  • 在php中调整图像的透明度

    我已经仔细研究了在调整 png 大小时如何正确管理 alpha 我设法让它保持透明度 但仅限于完全透明的像素 这是我的代码 src image imagecreatefrompng file dir this gt file name ds
  • C++20 中的指定初始值设定项

    我有一个关于 c 20 功能之一的问题 指定初始化程序 有关此功能的更多信息here include
  • 请求在 v2.3 API 中获取 Facebook 页面点赞总数

    以前我为此使用 FQL 但从 v2 1 开始已弃用 我将使用图形边缘 likes 转向 v2 3 这是我的网址 https graph facebook com v2 3
  • 如何根据标签更改 Chart.js 点的颜色

    我有一个 Chart js 折线图 其中标签是星期几 我想根据具体日期 周一至周日 更改点背景 我可以根据数据值更改背景颜色 但这不是我需要的 相反 我想给每一天 标签 一个不同的色点 例如 这就是我如何根据数据值更改点 不是我需要的 ch
  • 带有 EduTools 插件的 Kotlin Koans:“无法启动检查”

    我正在尝试遵循科特林公案Android Studio 中的教程安装 EduTools 插件 and 选择 Kotlin Koans 课程 一切正常 但是当我尝试时 检查任务 in the 任务描述面板 我收到此错误 启动检查失败 我也尝试了
  • 覆盖功能

    我正在学习一所著名大学提供的 iOS 在线课程 我不明白为什么使用以下代码override这是合法的 根据官方定义 我们使用override重写超类的方法 下面代码中的子类和超类在哪里 什么被覆盖以及被什么覆盖 public overrid
  • 使用 cv::Mat 进行高效的 C++ 四元数乘法

    我想乘以 2 个四元数 它们存储在cv Mat结构 我希望该功能尽可能高效 到目前为止我有以下代码 Quaternion multiplication void multiplyQuaternion const Mat q1 const M
  • 使用 ServiceStack.ORMLite 实现工作单元和存储库模式的最佳实践

    假设有两个存储库接口 interface IFooRepository void Delete int id interface IBarRepository void Delete int id 以及工作单元界面 例如 interface
  • React 从 URL 内联导入 SVG

    我正在解决一个问题 其中 SVG 图像需要从 URL AWS S3 加载到反应组件 我能够使用本地文件中的 SVG 内联反应组件成功显示和加载图像 但是 svg 文件需要从 S3 存储桶内联加载 JS svg 导入不适用于 URL 所以我想
  • 从 Python 中的 webbrowser.get() 调用 Chrome Web 浏览器

    我应该如何调用 webbrowser get 函数以便打开 chrome 网络浏览器 我正在运行 Ubuntu 11 04 和 Python 版本 2 7 使用 webbrowser get chrome 会产生错误 快速解决方法是将 Ch
  • HttpClient 不支持 PostAsJsonAsync 方法 C#

    我正在尝试从我的 Web 应用程序调用 Web API 我正在使用 Net 4 5 在编写代码时出现错误HttpClient不包含定义PostAsJsonAsync method 下面是代码 HttpClient client new Ht
  • 批处理在 for /f 命令上过早关闭

    我有一个批处理文件 在 Windows XP 中 激活了命令扩展 其中包含以下行 for f s in type version txt do set VERSION s 在某些计算机上 它工作得很好 如图所示这个问题 但在其他方面它杀死了
  • UISplitViewController 和方向 - iOS < 5.0

    我使用 splitviewcontroller 作为我的应用程序的根视图 我需要将登录和注册视图显示为 splitviewcontroller 顶部的模式视图 当我尝试从 splitViewController 的 rootview 的 v
  • “RepeatedCompositeContainer”类型的对象不可 JSON 序列化

    使用 Google Client Library 与视觉库交互 我有一个从图像中检测标签的功能 GoogleVision py import os from google cloud import vision from google cl
  • HTML Canvas - 绘制弯曲箭头

    我正在尝试在 html 画布中绘制弯曲的箭头 我画一条曲线没有问题 但我不知道如何放置 gt 在线的末端 方向 ctx beginPath ctx fillStyle rgba 55 217 56 opacity ctx moveTo th