【问题标题】:Drawing a taller and skinnier Konva.js Hexagon绘制一个更高更瘦的 Konva.js 六边形
【发布时间】:2020-04-20 03:18:20
【问题描述】:

我想使用 RegularPolygon 绘制一个“平面”六边形,但想调整高度和宽度。 “扁平”部分很容易旋转 30 度,但我似乎无法弄清楚如何让它更高更瘦。有什么建议吗?

提前致谢。

const stage = new Konva.Stage({
  container: 'container',
  width: window.innerWidth,
  height: 150
});

const layer = new Konva.Layer();
stage.add(layer);


var hexagon = new Konva.RegularPolygon({
  x: 100,
  y: 75,
  sides: 6,
  radius: 70,
  fill: 'red',
  rotation: 30
});

layer.add(hexagon);

stage.add(layer);
<script src="https://unpkg.com/konva@^2/konva.min.js"></script>
  <div id="container"></div>

目前使用线路:

const hex = new Konva.Line({  
points: hex.polygonPoints, // array of points  
closed: true,  
fill: 'rgba(0,0,0,0.6)'  
dashEnabled: false,  
shadowEnabled: false,  
listening: true,  
draggable: false,  
hitStrokeWidth: 0,  
perfectDrawEnabled: false  
});  

【问题讨论】:

    标签: konvajs konva


    【解决方案1】:

    您可以将节点移动到组中并使用scaleXscaleY 使其更高。

    const stage = new Konva.Stage({
      container: 'container',
      width: window.innerWidth,
      height: 150
    });
    
    const layer = new Konva.Layer();
    stage.add(layer);
    
    var group = new Konva.Group({
      x: 100,
      y: 75,
      scaleY: 1.5
    })
    layer.add(group);
    var hexagon = new Konva.RegularPolygon({
      sides: 6,
      radius: 50,
      fill: 'red',
      rotation: 30
    });
    group.add(hexagon);
    
    stage.add(layer);
    <script src="https://unpkg.com/konva@^2/konva.min.js"></script>
      <div id="container"></div>

    【讨论】:

    • 谢谢@lavrton 你认为用 Lines 制作的封闭多边形的性能会比 RegularPolygon 高还是低?我在一个图层 RPG 游戏地图中平均有 2500 个六角形。请参阅上面的示例代码原始问题。
    • 我认为它的性能几乎相同。可能RegularPolygon 稍微好一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多