用网页显示工控仪表

一.起因

现在工控也越来越多的使用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>

三.显示效果

相关推荐
Csvn6 小时前
WASM
前端
修己xj8 小时前
我用 AI 给自己写了一个 Markdown 编辑器,然后把它开源了
前端
FRing038 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
幸运小猿8 小时前
模拟慢上传-处理超时重试image 丢失线上问题
前端·javascript·html
moshuying10 小时前
网购能买Token了!
前端
h_654321010 小时前
echarts实现柱状图加一条横线
前端·echarts
风骏时光牛马10 小时前
生成一个后端标题,只需要一个标题,不需要其他的任何文本。
前端
子非鱼@Itfuture10 小时前
关于前后端联调中登录状态/登录信息失效?
java·前端
郭小李10 小时前
openFeign入门
java·开发语言·前端
馒头不想说话10 小时前
AI当运营,帮你省人力
前端