首页 > 其他分享 >前端的图表绘制框架Konva-基本介绍

前端的图表绘制框架Konva-基本介绍

时间:2024-04-07 13:01:23浏览次数:20  
标签:layer Konva add 图表 shape context 绘制 stage

关于Konva及TS的基础

这个Konva是一个HTML5的2D绘图库,应用它可以画出各种各样的二维图形来的。

Konva.js - JavaScript 2d canvas library MIT License

这个是用它创建的一些网站或者在线工具,还是挺有意思的。

应用它的程序自然是多得多,但是我最近也是因缘际会,用到它了。不过像所有开源软件一样,这个库尽管不错,但是还是碰到了一些问题。 慢慢都会把它记下来,写在 这儿吧。

总共代码13096行,从这儿看啊,还是不少的。全部是用TS写的,说实话,做为一个客串型前端,还真没怎么用过TS。这次也是赶鸭子上架了。

如果有谁想认真学习一下TS,可以看一下这个网站, TypeScript中文网 · TypeScript--JavaScript的超集 , 差不多是TS语言上比较重要的资料了。

Knova的安装方式

这个东西要安装还是很简单的。

npm install konva

或者直接在线引用

<script src="https://unpkg.com/[email protected]/konva.min.js"></script>

JavaScript的东西就是安装简单。

简单使用

官方的使用说明,也是非常简单的。

// first we need to create a stage
var stage = new Konva.Stage({
  container: 'container',   // id of container <div>
  width: 500,
  height: 500
});

// then create layer
var layer = new Konva.Layer();

// create our shape
var circle = new Konva.Circle({
  x: stage.width() / 2,
  y: stage.height() / 2,
  radius: 70,
  fill: 'red',
  stroke: 'black',
  strokeWidth: 4
});

// add the shape to the layer
layer.add(circle);

// add the layer to the stage
stage.add(layer);

// draw the image
layer.draw();

这个实际上就是在画一个圆圈,是不是也挺简单的。 先创建一个stage然后,创建layer, 把圆圈放在layer里,再把layer加到stage上,再调用layer自己更新一下,图像就出来了。

如果是定义一个自己的公平法律图形,也是很容易的,你看,只需要实现一个sceneFunc就可以了。

var rect = new Konva.Shape({
  x: 10,
  y: 20,
  fill: '#00D2FF',
  width: 100,
  height: 50,
  sceneFunc: function (context, shape) {
    context.beginPath();
    // don't need to set position of rect, Konva will handle it
    context.rect(0, 0, shape.getAttr('width'), shape.getAttr('height'));
    // (!) Konva specific method, it is very important
    // it will apply are required styles
    context.fillStrokeShape(shape);
  }
});

再看一个完整的例子吧。

<!DOCTYPE html>
<html>
  <head>
    <script src="https://unpkg.com/[email protected]/konva.min.js"></script>
    <meta charset="utf-8" />
    <title>Konva Custom Shape Demo</title>
    <style>
      body {
        margin: 0;
        padding: 0;
        overflow: hidden;
        background-color: #f0f0f0;
      }
    </style>
  </head>

  <body>
    <div id="container"></div>
    <script>
      var stage = new Konva.Stage({
        container: 'container',
        width: window.innerWidth,
        height: window.innerHeight,
      });

      var layer = new Konva.Layer();

      /*
       * create a triangle shape by defining a
       * drawing function which draws a triangle
       */
      var triangle = new Konva.Shape({
        sceneFunc: function (context, shape) {
          context.beginPath();
          context.moveTo(20, 50);
          context.lineTo(220, 80);
          context.quadraticCurveTo(150, 100, 260, 170);
          context.closePath();

          // (!) Konva specific method, it is very important
          context.fillStrokeShape(shape);
        },
        fill: '#00D2FF',
        stroke: 'black',
        strokeWidth: 4,
      });

      // add the triangle shape to the layer
      layer.add(triangle);

      // add the layer to the stage
      stage.add(layer);
    </script>
  </body>
</html>

结果是这个:

标签:layer,Konva,add,图表,shape,context,绘制,stage
From: https://www.cnblogs.com/77cxw/p/18118835

相关文章

  • vuejs3.0 从入门到精通——网页图形绘制:登录页面
    网页图形绘制:登录页面安全升级,JS动态生成图片验证码功能一、实验目标掌握Canvas的基本用法。掌握使用Canvas绘制文本的方法。掌握使用Canvas绘制线段的方法。掌握使用Canvas导出图片的方法。掌握JS的基本语法和程序结构。掌握JS函数的定义和应用。掌握JS数......
  • 网页图形绘制:图片水印
    网页图形绘制:图片水印一、实验目标:掌握Canvas的基本用法。掌握Canvas图片引用的方法。掌握使用Canvas绘制文本的方法。掌握Canvas图形变形的方法。综合应用Canvas绘图技术,开发图片水印。二、实验任务使用<canvas>标签结合JS制作带水印的图片,页面效果如下......
  • PlantUML 是绘制 uml 的一个开源项目
    拓展阅读常见免费开源绘图工具OmniGraffle创建精确、美观图形的工具UML-架构图入门介绍starUMLUML绘制工具starUML入门介绍PlantUML是绘制uml的一个开源项目UML等常见图绘制工具绘图工具draw.io/diagrams.net免费在线图表编辑器绘图工具excalidraw介绍绘......
  • 使用Python的turtle模块绘制美丽的樱花树
    引言Python的turtle模块是一个直观的图形化编程工具,让用户通过控制海龟在屏幕上的移动来绘制各种形状和图案。turtle模块的独特之处在于其简洁易懂的操作方式以及与用户的互动性。用户可以轻松地通过使用诸如前进、后退、左转、右转等基本命令,来编写程序控制海龟的行动路径,从而创......
  • 2-38. 第二场景的绘制指南
    制作室内所需要的素材室内的瓦片家具记得家具的锚点要设置在底部开始实际制作室内将相机改成黑色创建02.Home场景注意从01.Field场景中拷贝相关的对象项目相关代码代码仓库:https://gitee.com/nbda1121440/farm-tutorial.git标签:20240406_2027......
  • 前端使用 Konva 实现可视化设计器(2)
    作为继续创作的动力,继续求githubStar能超过50个(目前惨淡的0个),望多多支持。源码示例地址在上一章,实现了“无限画布”、“画布移动”、“网格背景”、“比例尺”、“定位缩放”,并简单叙述了它们实现的基本思路。关于位置和距离从源码里可以发现,多处依赖了Konva.Stag......
  • matlab 绘制正态分布图
    目录一、简单正态分布曲线1、代码实现2、结果展示二、绘制不同分布区间的颜色1、代码实现2、结果展示三、计算标准差分布的百分比1、代码实现2、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。一......
  • 2-34. 绘制房子和可以被砍伐的树
    绘制房子首先将房子的下半部分绘制到GroupTop这层然后把房顶绘制到Front1这层绘制碰撞层可以被砍伐的树其中Tree01_Bottom是有阴影的树根,Tree01_Trunk是没有阴影的树根调整树根的锚点接着把树的上部分连接上去把树根和树干放到同一个父物体下面树遮挡人......
  • 前端使用 Konva 实现可视化设计器(1)
    使用konva实现一个设计器交互,首先考虑实现设计器的画布。一个基本的画布:【展示】网格、比例尺【交互】拖拽、缩放“拖拽”是无尽的,“缩放”是基于鼠标焦点的。最终效果:基本思路:设计区域HTML由两个节点构成,内层挂载一个Konva.stage作为画布的开始。<template><......
  • C语言—用EaxyX绘制实时钟表
     代码效果如图#undefUNICODE#undef_UNICODE#include<graphics.h>#include<conio.h>#include<math.h>#definewidth640#definehigh480#definePI3.14159intmain(){ initgraph(width,high); intcenter_x,center_y; center_x=width/2;......