当前位置:   article > 正文

【Fabric.js】监听画布or元素的点击、选中、移动、添加、删除销毁、变形等各事件_fabric.js 点击选择元素

fabric.js 点击选择元素

fabric使用过程中,如果想要玩各种花样,那么fabric的事件监听是一定、必须、肯定要掌握!!!

例子就用vue项目组件里的代码,fabric的使用跟vue、react、angular之类的框架都没任何关系!
并且本demo只对功能进行讲述,实际项目使用肯定要进行封装,别直接就照抄导致写的丑!

代码中监听事件回调函数里的第一个参数,根据事件的不同,有目标图形信息、坐标信息等,自己一看就看得懂了,不讲解;

代码只简单介绍一些常用的目标监听事件,更全面的、更多花样的玩法自行查阅官网即可~~

  1. <template>
  2. <div class="cdie">
  3. <canvas id="c" ref="canvas"></canvas>
  4. </div>
  5. </template>
  6. <script setup lang="ts">
  7. import { ref, onMounted, reactive } from "vue";
  8. import { fabric } from "fabric";
  9. let canvas = null;
  10. onMounted(() => {
  11. canvas = new fabric.Canvas("c", {
  12. backgroundColor: "grey",
  13. minZoom: 1,
  14. maxZoom: 1.5,
  15. width: 1000,
  16. height: 444,
  17. });
  18. canvas
  19. .on('selection:cleared', (e) => {
  20. // 画布内取消选中后的事件
  21. console.log(canvas.getActiveObject());
  22. })
  23. .on('selection:created', (e) => {
  24. // 初次选中图形目标的事件
  25. console.log(canvas.getActiveObject());
  26. })
  27. .on('selection:updated', (e) => {
  28. // 变更选中图形目标的事件
  29. console.log(canvas.getActiveObject());
  30. })
  31. .on('mouse:down', (e) => {
  32. // 画布鼠标按下事件
  33. console.log(e);
  34. })
  35. .on('mouse:up', (e) => {
  36. // 画布鼠标松开事件
  37. console.log(e);
  38. })
  39. .on('mouse:move', (e) => {
  40. // 画布鼠标移动事件
  41. console.log(e);
  42. })
  43. .on('object:added', (e) => {
  44. // 当有图形添加进画布时触发的事件
  45. console.log(e.target);
  46. })
  47. .on('object:removed', (e) => {
  48. // 当有图形从画布销毁时触发的事件
  49. console.log(e.target);
  50. })
  51. .on('object:moving', (e) => {
  52. // 图形移动时触发;
  53. console.log(e.target);
  54. })
  55. .on('object:scaling', (e) => {
  56. // 图形缩放时触发;
  57. console.log(e.target);
  58. })
  59. window.fabric = canvas
  60. var line = new fabric.Line([10, 10, 333, 200], {
  61. strokeWidth: 1,
  62. stroke: "yellow",
  63. id: "linexx",
  64. });
  65. var rect = new fabric.Rect({
  66. left: 100,
  67. top: 100,
  68. width: 100,
  69. height: 50,
  70. fill: "pink",
  71. });
  72. var rect2 = new fabric.Rect({
  73. left: 400,
  74. top: 100,
  75. width: 100,
  76. height: 50,
  77. fill: "yellow",
  78. });
  79. canvas.add(line);
  80. canvas.add(rect);
  81. canvas.add(rect2);
  82. canvas.renderAll()
  83. });
  84. </script>
  85. <style>
  86. img {
  87. margin: 10px !important;
  88. }
  89. </style>
  90. <style scoped lang="less">
  91. .bss {
  92. margin: 10px;
  93. object-fit: contain;
  94. width: 22px;
  95. height: 22px;
  96. border: 1px solid rgb(46, 46, 46);
  97. }
  98. .cdie {
  99. width: 100%;
  100. text-align: center;
  101. display: flex;
  102. }
  103. </style>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/98088
推荐阅读