Pixi绘制带箭头的线

简介: 这篇文章讲解了如何使用Pixi.js来绘制带有箭头的线条,并提供了绘制箭头的具体实现方法和技术细节。

最近在用pixi绘制地图的时候需要做带箭头的线,用来从一个点执行另一个点,表示此段路线可行,但是发现pixie是没有自带的绘制带箭头线段的,那就只能自己绘制了,在此记录一下,pixi底层是用的canvas,所以绘图和方法和canvas很像,先通过PIXI创建Graphics对象。,绘制一条线段,这里绘制从(50,50)到(350,350)的线段颜色设置为黑色

 let graphics = new PIXI.Graphics();
 this.app.stage.addChild(graphics);

// 绘制线段
graphics.lineStyle(2, 0x000000); // 设置线条样式(宽度和颜色)
graphics.moveTo(50, 50); // 起点
graphics.lineTo(350, 350); // 终点
AI 代码解读

然后开始给这个线段绘制箭头,绘制箭头的功能可以封装为一个方法,箭头的位置,朝向等,由于线段的朝向不确定性,箭头也需要根据线段的方向来算,通过两个点的夹角方向获取到箭头的朝向,

drawArrow(graphics, x, y, dx, dy, size) {
      let angle = Math.atan2(dy, dx); // 计算角度
      // 计算箭头两侧的顶点位置
      let arrowX1 = x - size * Math.cos(angle + Math.PI / 6);
      let arrowY1 = y - size * Math.sin(angle + Math.PI / 6);
      let arrowX2 = x - size * Math.cos(angle - Math.PI / 6);
      let arrowY2 = y - size * Math.sin(angle - Math.PI / 6);
      // 绘制箭头
      graphics.beginFill(0x000000); // 设置填充颜色
      graphics.moveTo(x, y); // 从当前点开始
      graphics.lineTo(arrowX1, arrowY1); // 绘制箭头的一侧
      graphics.lineTo(arrowX2, arrowY2); // 绘制箭头的另一侧
      graphics.lineTo(x, y); // 闭合箭头
      graphics.endFill(); // 结束填充
    }
AI 代码解读

然后就可以根据需要来给线段绘制箭头,其中dx的值是startX-endX,dy的值是startY-endY获取到,

      graphics.lineStyle(2, 0x000000); // 设置线条样式(宽度和颜色)
      graphics.moveTo(50, 50); // 起点
      graphics.lineTo(350, 350); // 终点
      this.drawArrow(graphics, 50, 50, -300,-300, this.size);
      this.drawArrow(graphics, 350, 350,  300,300, this.size);
AI 代码解读

最终结果如下:

相关文章
|
10月前
cavans图形绘制(直线、矩形、原型、贝塞尔曲线、渐变背景) 2
cavans图形绘制(直线、矩形、原型、贝塞尔曲线、渐变背景) 2
|
6月前
ThreeJs绘制线
这篇文章详细说明了如何使用Three.js来绘制线条,包括创建线几何体、设置材质以及将线条添加到3D场景中的具体步骤。
117 1
Pixi绘制各种图形
这篇文章作为Pixi.js入门教程的一部分,详细介绍了如何使用Pixi.js绘制各种基本图形,如矩形、圆角矩形、圆形和椭圆,并提供了具体的实现代码。
115 0
Pixi绘制各种图形
|
6月前
|
vue中使用echarts绘制双Y轴图表时,刻度没有对齐的两种解决方法
vue中使用echarts绘制双Y轴图表时,刻度没有对齐的两种解决方法
1250 0
|
11月前
|
绘制箭头
【5月更文挑战第11天】绘制箭头。
60 1
|
10月前
cavans图形绘制(直线、矩形、原型、贝塞尔曲线、渐变背景) 1
cavans图形绘制(直线、矩形、原型、贝塞尔曲线、渐变背景)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
319 0
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
C#-利用自定义控件绘制一个箭头控件
利用自定义控件绘制一个箭头控件
796 0
用Canvas实现简单画图(线、三角形、矩形、圆)
👋因为在B站看到一个小demo是基于canvas写的,非常喜欢,然后上掘金大数据又给我推了 《Canvas 从入门到劝朋友放弃(图解版)》,就像上手一下canvas,本来不想写笔记的,因为《Canvas 从入门到劝朋友放弃(图解版)》自己看了一下挺全的,但本着输入要有输出,所以就有了这篇文章
276 0