JavaScript图形库

Paper.js:实现Google Material Design的JavaScript矢量图形库 在当今多设备、多平台的网络环境中,设计师和开发者追求的是能够在不同设备间提供一致用户体验的设计语言。Google 的 Material Design 提供了这样一套设计原则和组件库,旨在为用户提供直观、自然和响应迅速的界面。与此同时,Paper.js 作为一款矢量图形脚本框架,能够为设计师提供更丰富的图形表现和交云动手段。结合这两者,我们可以创造出既美观又富有动态交互效果的用户体验。在 Paper.js 中,贝塞尔曲线和路径操作是创建复杂动画的基础。通过定义和操作路径,我们可以实现平滑的动画过渡。 阅读详情

JavaScript图形库

VisualSW

       在WEB开发中,当我们需要在WEB页面上绘制一些图形的时候,就比较困难了,最近的开发中碰到了些需要在客户端绘制图形,比如三角形、椭圆等。好在现在有互联网,到Google一搜,呵呵,还真不少,就这样,找到了一个很好的JavaScript+Dhtml的图形库,真的很好,不由得感慨老外开发的专业,^_^,好了,我们就去看看吧。

这位老外Walter Zorn的网址是http://www.walterzorn.com,很好的JavaScript的网站,很强的说。

这次用到的是WEB直接绘图功能,到这个地址下载

http://www.walterzorn.com/scripts/wz_jsgraphics.zip

我们来看看效果:

强吧,呵呵!

页面上的帮助文档很强,不用我来解释了吧。

我在这个上面做了一点点开发,呵呵,大家也可以根据自己的需要开发新的函数哈;

增加了一个方法:带箭头的直线

首先添加一些参数:

/*

=====================================================================================

功能:带箭头直线参数

作者:申旺

日期: 2004/04/15

======================================================================

*/

var LineColor="#000000";

var LineWidth=3;

var ArrowHeadWidth=5;

var ArrowHeadAngle=15/180*Math.PI;//弧度

var ArrowBegin=true;

var ArrowEnd=true;

 

/*

======================================================================

*/

 

 

然后添加绘制带箭头直线的函数,可以设置箭头的有无,文字,箭头的角度等

/*

======================================================================

功能:绘制带箭头直线

作者:申旺

日期: 2004/04/15

======================================================================

*/

    this.setArrowWidth = function(x)

    {

        ArrowHeadWidth = x;

    }

   

    this.setArrowAngle = function(x)

    {

        x=x>90?45:x;

        x=x<0?45:x;

        ArrowHeadAngle = x*Math.PI/180;

    }

   

    this.setLineWidth = function(x)

    {

        LineWidth=x;

    }

   

    this.setLineColor = function(x)

    {

        LineColor=x;

    }

   

    this.setArrowBegin = function(x)

    {

        ArrowBegin=x;

    }

   

    this.setArrowEnd = function(x)

    {

        ArrowEnd=x;

    }

      

       this.drawArrowHeadLine = function(beginX,beginY,endX,endY)

       {

           this.setColor(LineColor);

        this.setStroke(LineWidth);

       

           var dx,dy;   

        dx=Math.abs(beginX-endX);

        dy=Math.abs(beginY-endY);

       

        var LineSlope;//直线斜率(弧度)       

       

        LineSlope=Math.atan(dx/dy);

       

        //求出中距每点的坐标

        var tmpLine;

       

        tmpLine=(LineWidth+ArrowHeadWidth)/(2*Math.sin(ArrowHeadAngle));    

          

        //起点中点

        var BeginCenterX;

        var BeginCenterY;

       

        //终点中点

        var EndCenterX;

        var EndCenterY;       

       

        if(ArrowBegin)

        {

        //绘制起点三角形

        //Begin           

           

            BeginCenterX=beginX+tmpLine*Math.sin(LineSlope);

            BeginCenterY=beginY+tmpLine*Math.cos(LineSlope);

           

            //定义起点三角形的三个顶点

            var BeginX1,BeginY1;

            var BeginX2,BeginY2;

            var BeginX3,BeginY3;

           

            BeginX1=beginX;

            BeginY1=beginY;               

           

            BeginX2=beginX-tmpLine*Math.sin(ArrowHeadAngle-LineSlope);

            BeginY2=beginY+tmpLine*Math.cos(ArrowHeadAngle-LineSlope);

           

            BeginX3=beginX+tmpLine*Math.sin(ArrowHeadAngle+LineSlope);

            BeginY3=beginY+tmpLine*Math.cos(ArrowHeadAngle+LineSlope);       

           

            var XBeginpoints = new Array(BeginX1,BeginX2,BeginX3);

            var YBeginpoints = new Array(BeginY1,BeginY2,BeginY3);

            this.fillPolygon(XBeginpoints, YBeginpoints);           

                       

        //End

        }

        else

        {

            BeginCenterX=beginX;

            BeginCenterY=beginY;

        }

       

       

        if(ArrowEnd)

        {

        //绘制终点三角形

        //Begin          

           

            EndCenterX=endX-tmpLine*Math.sin(LineSlope);

            EndCenterY=endY-tmpLine*Math.cos(LineSlope);           

           

            //定义终点三角形的三个顶点

            var EndX1,EndY1;

            var EndX2,EndY2;

            var EndX3,EndY3;

           

            EndX1=endX;

            EndY1=endY;

           

            EndX2=endX-tmpLine*Math.sin(ArrowHeadAngle+LineSlope);

            EndY2=endY-tmpLine*Math.cos(ArrowHeadAngle+LineSlope);

           

            EndX3=endX+tmpLine*Math.sin(ArrowHeadAngle-LineSlope);

            EndY3=endY-tmpLine*Math.cos(ArrowHeadAngle-LineSlope);       

           

            var XEndpoints = new Array(EndX1,EndX2,EndX3);

            var YEndpoints = new Array(EndY1,EndY2,EndY3);

            this.fillPolygon(XEndpoints, YEndpoints);

       

        //End

        }

        else

        {

            EndCenterX=endX;

            EndCenterY=endY;

        }

       

        //绘制中心线       

        this.drawLine(BeginCenterX,BeginCenterY,EndCenterX,EndCenterY);

       }

      

       this.drawFlowLine = function(beginX,beginY,endX,endY,beginText,endText)

       {

           var TextX;

           var TextY;

          

           this.drawArrowHeadLine(beginX,beginY,endX,endY);

          

           TextX=beginX+20;

           TextY=beginY;

           this.drawString(beginText,TextX,TextY);

       }

 

下面我们来看看效果:

测试代码:

<HTML>

    <HEAD>

        <title>DHTML JavaScript Tooltips</title>

              <script language="javascript" src="./Graphics.js"></script>       

        <script language="javascript">            

 

              var jg = new jsGraphics();

 

              jg.setArrowWidth(4);

              jg.setArrowAngle(20);

              jg.setLineWidth(2);

              jg.setLineColor("Blue");        

              jg.drawFlowLine(10,10,200,200,"Line1");

 

              jg.setLineColor("Red");

              jg.setArrowBegin(false);

              jg.drawFlowLine(110,10,300,200,"Line2","End");

 

              jg.setLineColor("Green");

              jg.setArrowBegin(true);

              jg.setArrowEnd(false);

              jg.drawFlowLine(210,10,400,200,"","Line3");

 

              jg.setArrowEnd(true);

              jg.setArrowAngle(15);

              jg.drawFlowLine(310,10,500,200,"","Line4");

 

              jg.setArrowAngle(30);

              jg.drawFlowLine(410,10,600,200,"","Line5");

             

             

              jg.setLineWidth(10)

              jg.drawFlowLine(410,10,600,200,"","Line5");

 

              jg.setStroke(10)

              jg.drawLine(10,300,400,500);

 

              jg.paint();

        </script>

        <meta http-equiv="expires" content="0">       

    </HEAD>

    <body>

    </body>

</HTML>

 

可以看到效果还是很好的,只是有一个问题,因为绘制线的时候,线的宽度内部实现上是用正方形实现的,所有当线宽了之后,会在头尾发现不理想的地方,如图。

 

这位老兄真的满强的,还有其他的类库,

比如:层的东东,可以随便托放,图片可是缩放,隐藏等,new就是被我拖大的哈。

提示栏,呵呵,比我那篇文章里面的功能强多了哈:

还有更强的,在线函数绘制图形,哈哈!

感觉WEB都像CS程序了。

最好的是,这么好的冬冬是free的,GNU:

This program is free software;

you can redistribute it and/or modify it under the terms of the

GNU General Public License as published by the Free Software Foundation;

either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY;

without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See the GNU General Public License

at http://www.gnu.org/copyleft/gpl.html for more details.

好了,呵呵,快去看看哈!

 

Graph.zip - GWT版JavaScript图形库 本文还有配套的精品资源,点击获取 简介:Graph.zip是一个开源项目,提供了一个GWT包装器,用于在GWT应用中集成JavaScript图形库,如Arbor.js。Arbor.js是一个用于创建网络图表和流程图等复杂数据可视化的流行库。这个包装器允许Java开发者利用JavaScript库的功能,同时保持在Java开发环境中的舒适性。 1. GWTPackage简... 阅读详情

相关推荐

JavaScript图形绘制库Toxiclibs.js.zip

Toxiclibs.js 是一个开源的计算机图形设计库,无需外部依赖,使用 <canvas> 元素进行图形绘制。 标签:Toxiclibs

向 Web 开发人员推荐35款 JavaScript 图形图表库

  图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等。可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和 Web 应用和项目的可靠性。   在这篇文章中,我们收集了35款值得网站开发者收藏的 JavaScript 图形图表库,适合各种图表需求。其中大部分都是免费而且开源的,希望大家能在下面的列表中找到适合自己需求的 JavaScript 图表和图形库。 ...

weixin_34162695的博客 501

Greenplum基础

CREATE DATABASE 是 SQL 命令,用于创建一个新的数据库。name 是你要创建的数据库的名称。这个名称是必须的,并且在同一个数据库服务器上必须是唯一的。可选项,OWNER 指定了新数据库的所有者,如果未指定,新数据库的所有者默认是执行该命令的用户。dbowner 是数据库所有者的用户名。可选项,TEMPLATE 指定了用于创建新数据库的模板。在 PostgreSQL 和 GreenPlum 中,通常有一个名为 template1 的默认模板。如果不指定,就会使用这个默认模板。

m0_57697768的博客 1206

13款JavaScript图像处理库,建议收藏备用

JavaScript库

六六的小帅的博客 5093

python 识别滑块验证码

博客来源于: https://www.cnblogs.com/wyh0923/p/16528354.html # -*- coding: utf-8 -*- # https://gov.pkulaw.cn/ 1. import io 2. import json 3. from pathlib import Path 4. from PIL import Image 5. import bas...

2102

V2签名预装失败原因及解决方案

GOOGLE最新的GTS要求targetSdkVersion 大于30的APK必须使用V2及以上签名。 但实际在预装过程中,GTS测试会失败。 后面发现这是由于预装方式的原因造成的。原来的预装方式是使用APK,指定APK使用预签名的方式。Android.mk如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := DKTest LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_TAGS

zyfzhangyafei的专栏 6303

盘点五大热门JavaScript图表库,助你高效开发!

D3.js(Data-Driven Documents)是一个非常强大的数据可视化库,它允许你通过操纵DOM来绑定任意数据到文档,并使用SVG、Canvas和HTML将数据转换为图表。ECharts 是由百度开源的一个使用 JavaScript 实现的开源可视化库,支持丰富的图表类型,并提供了一套非常完善的图表工具库,包括直角坐标系、极坐标系、地理坐标系等。它支持多种图表类型,并且免费用于非商业用途。这些图表库各有特点,你可以根据自己的项目需求、技术栈偏好以及对图表定制程度的要求来选择合适的图表库。

Jiaberrr的博客 2683

Mac上IDEA的PlantUML插件报错‘找不到Graphviz’?手把手教你用Homebrew搞定(附阿里云镜像避坑)

本文详细解决了Mac上IDEA的PlantUML插件报错‘找不到Graphviz’的问题,通过Homebrew安装Graphviz并配置阿里云镜像源,特别针对Apple Silicon芯片用户提供了优化方案。文章还涵盖了IDEA中PlantUML插件的正确配置和常见问题排查,帮助开发者高效使用PlantUML进行UML图表设计。

weixin_42619742的博客 468

LibCanvas —— 强大的JavaScript图形库

LibCanvas —— 强大的JavaScript图形库 LibCanvas 是一个用于在网页中绘制高质量图形的 JavaScript 库,它提供了一组强大的 API 和工具,使开发者能够轻松地创建出各种美观、交互式的图形。 LibCanvas 能用来做什么? 创建动画和游戏 绘制图表和数据可视化 制作互动式图形 在网页中添加高级图像处理功能 建立复杂的UI元素和图形界面 LibCanvas...

gitblog_00055的博客 406

基于YOLOv11的无人机目标检测系统:实现drone、bird、aircraft多类别识别

采用改进的YOLOv11网络结构,平衡检测精度和速度融合VisDrone和UAVDT数据集,增强模型泛化能力设计多尺度特征融合模块,提升小目标检测性能开发直观的UI界面,便于实际部署和应用。

YOLO 324

高云FPGA系列教程(7):ARM GPIO外部中断

高云GN1NSR-4C共有16个GPIO,每个GPIO可配置成输入或输出模式,支持中断输入,触发方式可选择:上升沿、下降沿、高电平、低电平触发。中断优先级可通过NVIC进行设置,支持 0-7 级可编程中断优先级。

whik1194的博客 1375

20 个最棒的 JavaScript 图表库

每个企业在做重要决定时都倾向于做数据分析。实际上他们很多时候都是沉沦在数据里头,不知道如何跳出其中。随着大数据的到来,曾经好用的表格和图表只是不再削减它了。 企业一直寻求更好的方式来可视化数据,更好的互动和使图表多角度。毕竟,只有从数据中抽出的见解才是有用的。 JavaScript 图表库出现了,作为漂亮的,容易理解的,交互式的可视化图表最有力的工具。它能更容易提取和传达关键的模式和见解,而...

hebeind100的博客 405

第29章:PCL PrincipalCurvatures 曲率估计

PrincipalCurvatures(主曲率估计)是一种用于计算点云表面曲率的算法。曲率描述了曲面局部的弯曲程度,是表面几何特征的重要指标。在点云处理中,估计表面的曲率对于形状分析、物体识别、表面重建等任务非常重要。主曲率是曲面上某一点的最大和最小曲率方向。通过计算点云的主曲率,我们可以获得点云中每个点的局部形状特征。通常情况下,主曲率包括两个主要参数:最大主曲率(最大曲率方向上的曲率)和最小主曲率(最小曲率方向上的曲率)。优点缺点提供了对点云表面局部形状的深入分析。

yumeiguo的博客 213

JavaScript图形库Plotly开源

今天最火的新开源项目,除了Netflix的Spinnaker外,应该算Plotly.js了。刚才看Star数已经超过1000。Plotly基于D3.js、stack.gl(WebGL组件库,由Plotly团队的Mikola Lysenko领导开发)和SVG,用JavaScript在网页上实现了类似MATLAB和Python matplotlib的图形展示功能,支持20种图形(除了下面的例子外,也...

优快云与《程序员》总编观察 2863

手把手教你学Simulink--基于Simulink的高增益DC-DC变换器仿真建模

特点高电压增益:可以在不使用变压器的情况下实现较大的电压升压比。适用于低电压源:如太阳能电池板、燃料电池等提供的低压直流电源。效率问题:设计时需特别注意提高效率,减少能量损失。挑战电路复杂性:通常涉及多个电感和电容,以及复杂的开关模式。元件选择:合适的元件参数对于达到理想性能至关重要。控制策略:确保高效稳定运行的同时,适应负载变化。首先明确要模拟的任务内容。实现特定的电压增益比(例如从24V升至380V)。根据预期的输入输出电压确定合适的电路拓扑和元件值。

MHD0815的博客 173

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【亲测免费】 Paper.js - 一个强大的JavaScript矢量图形库

Paper.js是一个开源的JavaScript矢量图形库,专为Web设计师和开发人员提供易用性和灵活性。通过使用Paper.js,您可以在浏览器中创建复杂的2D图形、动画和交互式应用。 ## 项目介绍 Paper.js的目标是让Web设计人员能够轻松地在JavaScript环境中进行图形设计。它提供了丰富的API和工具,使得开发者可以专注于创意,而不需要过多关注底层实现细节。 这个项目的目...

gitblog_00010的博客 1951

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Paper.js - 强大的JavaScript矢量图形库

Paper.js是一个开源的JavaScript矢量图形库,专为Web设计师和开发人员提供易用性和灵活性。通过使用Paper.js,您可以在浏览器中创建复杂的2D图形、动画和交互式应用。 ## 项目介绍 Paper.js的目标是让Web设计人员能够轻松地在JavaScript环境中进行图形设计。它提供了丰富的API和工具,使得开发者可以专注于创意,而不需要过多关注底层实现细节。该项目被描述为"

gitblog_00633的博客 741

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【 随笔 】 JavaScript 图形库的流行度调查

2014年可以说是 JavaScript 最风光的一年,成为上升最快的语言,在 Github 上最受关注的前10个仓库中,有7个是基于 JavaScript 开发的,数不胜数的函数库可适应于各种需求。那么,在可视化图形库方面,最受关注的有哪些呢?1. 编程语言排行榜数据来源于 TIOBE,前六名是我们都耳熟能详的语言:C、Java、C++、PHP等,JavaScript排名第 7,上升率最大。排在

十二月咖啡馆工作室 2692

除了 Three.js 外还有哪些同样知名、功能类似的 JavaScript 3D 图形库或引擎

Three.jsBabylon.jsPixiJSPlayCanvasA-FrameAmmo.jsCannon.jsUnity WebGLCesiumJSZdogD3.js(带 支持的扩展)Fiber (React-Three-Fiber)需要灵活性和自定义功能:轻量化需求:学习曲线较浅:扩展生态强大:需要完整的 游戏引擎功能:注重现代图形技术:需要可视化工具链:团队开发或多人协作:如果项目需要:开发经验:

卡尔特斯 2809

Javascript、DHTML构建矢量图形库(折线、多边形、圆)

引用:在 www.sitepoint.com 上看了 Simon 的一篇 BLOG ,引导我去了一个很棒的 Web 开发站点 http://www.walterzorn.com/ ,并在那里获得了一个仅用 DHTML 和 JavSCRIPT 技术开发的一个高性能的矢量图形库 wz_jsgraphics.js (感谢 Walter Zorn 开发了这个图形库),使用它就可以在你的网页上画出漂亮的

fireswolfs的专栏 1351

用Javascript和DHTML构建的矢量图形库

http://dev.youkuaiyun.com/article/26/26606.shtm序:在 www.sitepoint.com 上看了 Simon 的一篇 BLOG ,引导我去了一个很棒的 Web 开发站点 http://www.walterzorn.com/ ,并在那里获得了一个仅用 DHTML 和 Javscript 技术开发的一个高性能的矢量图形库 wz_jsgraphics.js (感谢

行舟 1023

GD图形库Node.js绑定——node-gd

GD图形库Node.js绑定——node-gd 1. 项目基础介绍及主要编程语言 node-gd是一个基于Node.js的开源项目,提供了GD图形库(libgd)的C++绑定。该项目允许开发者使用Node.js来创建、编辑、打开和保存多种格式的图像,如JPEG、PNG、GIF和BMP。主要编程语言包括C++和JavaScript。 2. 项目的核心功能 node-gd项目的核心功能包括: 图像创...

gitblog_00374的博客 473

Three.js 3D图形库基础入门指南

Three.js 3D图形库基础入门指南 【免费下载链接】three.js JavaScript 3D Library. 项目地址: https://gitcode.com/GitHub_Trending/th/three.js ...

gitblog_00046的博客 459

javascript图形库

推荐一个javascript图形库,看起来不错。 http://www.highcharts.com demo在http://www.highcharts.com/demo/ 需要的可以参考一下。

weixin_34203832的博客 68
上一篇: TreeView(扩充XMLSelTree)(二)
下一篇: JavaScript通用库(一)
笑对最好
博客等级 码龄24年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值