【问题标题】:Canvas/Js is non visibleCanvas/Js 不可见
【发布时间】:2017-11-20 12:03:55
【问题描述】:

我想画一个画布。我的控制台没有显示任何问题。但是,画布没有显示,我无法找到错误,也没有在存档中找到类似的答案。如果有人对我有提示,我将不胜感激。这里是 js.fiddle:https://jsfiddle.net/8hxna032/

我的 JS 代码:

        var canvas = document.getElementById('canvas');
        var ctx = canvas.getContext('2d');
        console.log(ctx);
        ctx.strokeStyle = '28d1fa';
        ctx.lineWidth = 17;
        ctx.lineCap = 'round';
        ctx.shadowBlur = 15;
        ctx.shadowColor = '28d1fa';

        function degtoRad(degree) {

            var factor = Math.PI / 180;
            return degree * factor;
        }

        function donutChart() {
            var record = 1200; // equal to 100% or 360°
            var average = 120;
            var income = 127;
            var target = 170;

            //Background
            gradient = ctx.createRadialGradient(250, 250, 5, 250, 250, 300);
            gradient.addColorStop(0, '09303a');
            gradient.addColorStop(1, 'black');
            ctx.fillStyle = gradient;
            ctx.fillStyle = '#1adda4';
            ctx.fillRect(0, 0, 500, 500);

            // Record
            ctx.beginPath();
            ctx.arg(250, 250, 200, degtoRad(270), degtoRad(360 - 90));
            ctx.stroke();

            // Average
            ctx.beginPath();
            ctx.arg(250, 250, 170, degtoRad(270), degtoRad((average / record * 360) - 90));
            ctx.stroke();

            //Income
            ctx.beginPath();
            ctx.arg(250, 250, 140, degtoRad(270), degtoRad((income / record * 360) - 90));
            ctx.stroke();

            // target
            ctx.beginPath();
            ctx.arg(250, 250, 110, degtoRad(270), degtoRad((target / record * 360) - 90));
            ctx.stroke();


            // Income
            ctx.font = "25px Arial";
            ctx.fillStyle = '28d1fa';
            ctx.fillText(income, 175, 250);

            //Target
            ctx.font = "15px Arial";
            ctx.fillStyle = '28d1fa';
            ctx.fillText(target, 175, 280);

        }

        var dataURL = canvas.toDataURL();

        document.getElementById('myImage').src = dataURL;

HTML:

  <canvas class="panel_block" id="canvas" width='500' height="500"></canvas>
    <img id="myImage" />

【问题讨论】:

  • 一些错别字:你从来没有调用过donutChart函数,你忘记了渐变颜色停止前的#,它是ctx.arc而不是ctx.argjsfiddle.net/8hxna032/1

标签: javascript html canvas


【解决方案1】:

在我看来你的画布是可见的,只是你没有给它一个与网页不同的背景。

【讨论】:

  • @Amber Smith 我不知道你为什么投反对票。我告诉过你为什么它“不可见”。您的代码没有绘制,因为您从未调用过您的函数,并且其中的颜色无效。
  • 我是论坛的新手,甚至没有机会投票……抱歉,不是我。 ;)
  • @CalebBlack 猜猜你的答案为什么被否决(顺便说一下,这需要 125 的最低声誉,正如 here 所解释的那样):虽然可能是对的,但它没有回答问题,它没有t 解决代码失败的原因(各种拼写错误),最后,您回答了一个拼写错误问题。 SO 的目标是建立一个知识库,不仅对提出问题的人有用,而且修复错别字不太可能做到这一点。
  • 这不仅仅是错别字的问题。我也没有调用该函数。然而,这个世界上不仅有专家,有些错别字对你来说可能很直观,但对我来说却不是......
  • @AmberSmith 答案仍然没有解决为什么代码一开始就不起作用。就像我说的;这些都是猜测。
猜你喜欢
  • 2011-05-05
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2012-12-26
相关资源
最近更新 更多