Canvas库 KonvaJS入门 2坐标体系总结
创始人
2024-04-24 18:29:06
0

Canvas库 KonvaJS入门 2坐标体系总结

  • 一、 准备环境
  • 二、konvasJS坐标基本使用演示
    • 1. 按坐标放置控件
    • 2. 移动group
    • 3. 父元素 scale 变化
    • 4. 子元素scale变化
    • 5. 旋转

一、 准备环境

KonvaJS的几个属性值与坐标都有关系,有时候不容易分清坐标如何计算,本文作个简单总结。
为调试方便,本文直接html引用 konvasjs库。
在这里插入图片描述

二、konvasJS坐标基本使用演示

1. 按坐标放置控件


Konva Drag and Drop a Group Demo

在这里插入图片描述
注意这时打印的坐标值:

group position {x: 0, y: 0}
group absolutePosition {x: 0, y: 0}
group width 0
group height 0
group clipX undefined
group getAbsoluteScale {x: 1, y: 1}
group getClientRect {x: 10, y: 20, width: 250, height: 140}
child0 position {x: 10, y: 20}
child0 absolutePosition {x: 10, y: 20}
child0 scale {x: 1, y: 1}
child0 width 100
child0 height 50

可以看到:

  • group的初始坐标全是0,因为group的坐标是相对于stage计算的;
  • group的width、height获取不到尺寸信息;
  • group可以通过getClientRect获取尺寸信息;

2. 移动group

给group添加事件:



Konva Drag and Drop a Group Demo

初始位置:
在这里插入图片描述
移动整个组:
在这里插入图片描述
可以看出分组坐标的变化:

  • group在这里的position,absolutePosition值是相同的;
  • 初始group的position,absolutePosition都是{0,0};
  • 当移动分组时,分组的坐标是相对于起点在发生变化;

可以理解为:

  • 添加的新group,它的坐标起点都在左上角{0,0}处;
  • 移动group时,它的position,absolutePosition都是相对于上一层画布来计算的;这里的画面基础坐标是不会变的,所以两个属性值保持相等;
  • 子元素相对于group放置,它的{x,y}属性值一直相对于group起点来计算;
  • 子元素的absolutePosition是相对画布的真实坐标。

3. 父元素 scale 变化

测试代码:



Konva Drag and Drop a Group Demo

在这里插入图片描述
总结:

  • 父层group的scale变化,不会影响子元素 position 的值;
  • 父层group的scale变化,会影响子元素absolutePosition的值;
  • 父层group的scale变化,不会影响子元素scale的值;
  • 父层group的scale变化,不会影响子元素尺寸值;
  • 父层group的scale变化,会影响父元素getClientRect尺寸值;
  • 父层group的scale变化,会影响子元素absoluteScale值。

4. 子元素scale变化



Konva Drag and Drop a Group Demo

在这里插入图片描述
总结:

  • 子元素 scale 的变化 ,不会影响自身尺寸;

5. 旋转

在这里插入图片描述

  • 旋转时,width,height不会发生变化 ;
  • 父元素旋转时,子元素的{x,y}不会变化 , absolutePosition会发生变化 ;
  • 旋转是以左上角为中心;
  • 旋转后position和absolutePosition都不会发生变化

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...