用网页显示工控仪表

一.起因

现在工控也越来越多的使用web页面来显示电压,电流,温度,转速等物理量.本例使用js控制网页显示速度仪表.

二.代码

csharp 复制代码
<html>
<head>
    <script type="text/javascript">
        var ctx;
        var px0;
        var movePoint={
            x0:0,
            x1:0
        };
      function init(){
          drawFace();
          movePoint.x0=30;
          movePoint.x1=30;
          px0=movePoint.x1;         
          drawPoint(movePoint);
      }
      function drawFace()
      {
        var c=document.getElementById("myCanvas");
        ctx=c.getContext("2d");
        ctx.lineWidth=3;
      
        ctx.strokeStyle="#FFFFFF";
        ctx.fillStyle="#FFFFFF";
        ctx.beginPath();
        ctx.arc(150,150,100,4/6*Math.PI,2/6*Math.PI);
        
        for (i=0;i<=300;i=i+10){
            x1=150+100*Math.cos((i+120)/180*Math.PI);
            y1=150+100*Math.sin((i+120)/180*Math.PI);
            ctx.moveTo(x1,y1);
            x=150+95*Math.cos((i+120)/180*Math.PI);
            y=150+95*Math.sin((i+120)/180*Math.PI);
            ctx.lineTo(x,y);
        }      
        ctx.font="11px 宋体";
        for (i=0;i<=300;i=i+20){
              x=143+85*Math.cos((i+120)/180*Math.PI);
              y=150+85*Math.sin((i+120)/180*Math.PI);
              ctx.fillText(i,x,y);
        } 
        ctx.stroke();
      }
      function drawPoint(movePoint){
          //抹旧针
        if (movePoint.x0!=movePoint.x1){   
            ctx.beginPath();
           ctx.strokeStyle="#000000";
            ctx.lineWidth=4;            
            var y=150+91*Math.sin((movePoint.x0+120)/180*Math.PI);
            var x=150+91*Math.cos((movePoint.x0+120)/180*Math.PI);
            ctx.moveTo(150,150);
            ctx.lineTo(x,y);
            ctx.stroke();
            ctx.beginPath();
            ctx.font="11px 宋体";
            ctx.fillStyle="#FFFFFF";
            ctx.strokeStyle="#FFFFFF";
            var i=Math.round( movePoint.x0/20);
            var iP1=i*20;
            x=143+85*Math.cos((iP1+120)/180*Math.PI);
            y=150+85*Math.sin((iP1+120)/180*Math.PI);
            ctx.fillText(iP1,x,y);
            ctx.stroke();           
        }        
        ctx.beginPath();
        ctx.strokeStyle="#FFFFFF";
        ctx.fillStyle="#FFFFFF";
        ctx.lineWidth=3;
        movePoint.x0=movePoint.x1;
        y=150+90*Math.sin((movePoint.x0+120)/180*Math.PI);
        x=150+90*Math.cos((movePoint.x0+120)/180*Math.PI);
        ctx.moveTo(150,150);
        ctx.lineTo(x,y);
        ctx.stroke();
    }
    function pointMove()
    {
        movePoint.x0=px0;
        movePoint.x1=px0;
        movePoint.x1+=5;
        if (movePoint.x1>296)
        {
            movePoint.x1=0;
        }
        drawPoint(movePoint);
        px0=movePoint.x1;
       
    }
    </script>
</head>
<body onload="init()">
  
    <canvas id="myCanvas" width="300" height="300" style="border:1px solid #130013;background-color:black">
        Your browser does not support the HTML5 canvas tag.
    </canvas>
    <br/>
    <input id="b1" type="button" onclick="pointMove()" value="指针转"/>

</body>
</html>

三.显示效果

相关推荐
于慨1 天前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz1 天前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
从前慢丶1 天前
前端交互规范(Web 端)
前端
CHU7290351 天前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
GISer_Jing1 天前
Page-agent MCP结构
前端·人工智能
王霸天1 天前
💥别再抄网上的Scale缩放代码了!50行源码教你写一个永不翻车的大屏适配
前端·vue.js·数据可视化
小领航1 天前
用 Three.js + Vue 3 打造炫酷的 3D 行政地图可视化组件
前端·github
@大迁世界1 天前
2026年React大洗牌:React Hooks 将迎来重大升级
前端·javascript·react.js·前端框架·ecmascript
PieroPc1 天前
一个功能强大的 Web 端标签设计和打印工具,支持服务器端直接打印到局域网打印机。Fastapi + html
前端·html·fastapi
悟空瞎说1 天前
深入 Vue3 响应式:为什么有的要加.value,有的不用?从设计到源码彻底讲透
前端·vue.js