未完成的Canvas

 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>123456789</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div style="width: 1800px; margin: 0 auto; position: relative; ">
        <canvas id="myCanvas" width="1800" height="900"></canvas>
        <div class="TPY" >
            <p>特派员</p>
        </div>
        <div class="TPY1" >
            <p>扶贫</p>
        </div>
        <div class="TPY2" >
            <p>科技成果</p>
        </div>
        <div class="TPY3" >
            <p>星创天地</p>
        </div>
    </div>

<script>    
    var MyCanvas = document.getElementByIdx-x-x-x("myCanvas");
var Graph = MyCanvas.getContext("2d"); //能量方格
    function energyBlank(a,b,number,color)
 {        //a为起点弧度,b为终点弧度,number为能量方格的数量
        Graduate(a,b,430+10*number,color);
        Graduate(a,b,430,"#062e48");
        for(var i=0;i<number;i++){
            circle(10*i+440,"#062e48",3);
        }
    }
    energyBlank(344.3,345.7,16,"yellow");
    energyBlank(10.3,11.7,16,"blue");
    energyBlank(164.3,165.7,16,"red");
    energyBlank(190.3,191.7,16,"pink");
    //算出线条的数量
    for(var i=0;i<180;i++){
        curve(2*i,2*(i+1),1000);
    }    //线圈弧形    function curve(a,b,r){
        Graph.beginPath();
        Graph.moveTo(900,450);
        Graph.arc(900,450,r,rads(a),rads(b),false);
        Graph.closePath();
        Graph.lineWidth=1;
        //定义变量 canvasGradient  弧型线中心处的渐变效果 以(900,450,0,900,450,rx坐标(900)、y坐标(450)、半径(0)到半径为r的外圆(圆心坐标点同为900,450
        var canvasGradient = Graph.createRadialGradient(900,450,0,900,450,r);
        //0-0.2的位置的渐变
        canvasGradient.addColorStop(0,"rgba(0,0,0,0)");
        canvasGradient.addColorStop(0.2,"rgba(0,0,0,0)");
        //0.2(开始)-0.3(结束)的位置的渐变
        canvasGradient.addColorStop(0.2, "#062e48");
        canvasGradient.addColorStop(0.3, "#0c3352");
        canvasGradient.addColorStop(1, "#1d455f");
        Graph.strokeStyle = canvasGradient;
        Graph.stroke();
    }
    function rads(x){
        return Math.PI*x/180;
    }    //弧线上面的圆线
    function circle(r,color,line)
    {
        Graph.beginPath();
        Graph.strokeStyle=color;
        Graph.lineWidth=line;
        Graph.arc(900,450,r,0,2*Math.PI);
        Graph.stroke();
    }
    //线的属性(半径,颜色,宽度)
    circle(720,"#1d455f",1);
    circle(670,"#1d455f",1);
    circle(420,"#1d455f",1);
    //四个角落遮罩
    function shade(a,b,c,d,e,f){
        Graph.beginPath();
        Graph.moveTo(a,b);
        Graph.lineTo(c,d);
        Graph.lineTo(e,f);
        Graph.strokeStyle = "#062e48";
        Graph.fillStyle = "#062e48";
        //Graph.closePath();/*可有可无 关闭绘制的路径*/
      		Graph.fill();
        Graph.stroke();
    }
    //四个角落的遮罩图
    shade(0,0,0,320,520,0);
    shade(0,900,250,900,0,760);
    shade(1800,0,1550,0,1800,140);
    shade(1800,900,1550,900,1800,280);
    //四个区域的方格能量
    function Graduate(a,b,r,color)
    {
        Graph.beginPath();
        Graph.moveTo(900,450);
        Graph.arc(900,450,r,rads(a),rads(b),false);
        Graph.closePath();
        Graph.strokeStyle = "#062e48";
        Graph.stroke();
        //该对象的作用域是以(900,450)为圆心、半径为0px的内圆和以(950,450)为圆心、半径为r的外圆之间的环状区域
        var canvasGradient = Graph.createRadialGradient(900,450,410,900,450,670);
        canvasGradient.addColorStop(0, "#062e48");
        canvasGradient.addColorStop(1, color);
        Graph.fillStyle = canvasGradient;
        Graph.fill();
    }
    //能量格文字
    var textArr=["xxxxx"];
    var num = 2*Math.PI/360;
    Graph.translate(900,450);
    function angle(Txtangle)
    {
        for(var i=0;i<1;i++){
            Graph.save();
            Graph.beginPath();
            Graph.rotate((i*2+Txtangle)*num);
            Graph.fillStyle="#fff";
            Graph.font="14px 宋体";
            Graph.fillText(textArr[i],600,0);
            Graph.restore();
            Graph.stroke();
        }
    }
   angle(11.7);
   angle(327.7);
   angle(191.7);
   angle(147.7);
</script>
</body>
</html>

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
html2canvas是一个将HTML页面渲染canvas图像的JavaScript库。以下是html2canvas 0.5.0的文档: ## 安装 使用npm安装: ``` npm install html2canvas ``` 或者直接在HTML文件中引入: ```html <script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script> ``` ## 使用 ### 基本用法 ```javascript html2canvas(document.body).then(function(canvas) { document.body.appendChild(canvas); }); ``` 上面的代码将把当前页面的HTML元素渲染canvas元素,并将其插入到页面中。 ### 配置项 html2canvas还提供了一些配置选项,可以通过传递一个选项对象来设置这些选项。 ```javascript html2canvas(document.body, { allowTaint: true, backgroundColor: '#ffffff', useCORS: true }).then(function(canvas) { document.body.appendChild(canvas); }); ``` 下面是html2canvas支持的全部选项: - `allowTaint`(布尔值,默认为`false`):允许绘制跨域图片。如果设置为`true`,将会禁用tainted canvas错误的检查。 - `backgroundColor`(字符串,默认为`#ffffff`):指定背景颜色。可以是任何CSS颜色值。 - `canvas`(HTMLCanvasElement):使用给定的canvas元素进行绘制,而不是创建新的canvas元素。 - `foreignObjectRendering`(布尔值,默认为`false`):允许在canvas中绘制外部对象,如`<iframe>`、`<video>`或`<embed>`。如果设置为`true`,将会使用带有外部内容的`<foreignObject>`元素进行绘制。 - `height`(数字):指定canvas的高度。如果指定,将使用元素的高度。 - `letterRendering`(布尔值,默认为`false`):允许在canvas中绘制字母。如果设置为`true`,将会使用单独的canvas元素进行绘制,以使字母更加清晰。 - `logging`(布尔值,默认为`false`):启用日志记录。 - `proxy`(字符串):跨域代理的URL地址。html2canvas将会使用这个URL来加载跨域资源。 - `scale`(数字,默认为`window.devicePixelRatio`):指定绘制时的比例。可以是任何数字,但通常使用`window.devicePixelRatio`来绘制高清图像。 - `scrollX`(数字):指定水平滚动条的位置。可以是任何数字,但通常使用元素的`scrollLeft`属性来指定位置。 - `scrollY`(数字):指定垂直滚动条的位置。可以是任何数字,但通常使用元素的`scrollTop`属性来指定位置。 - `useCORS`(布尔值,默认为`false`):使用跨域资源共享(CORS)来加载跨域图片。 ### 方法 html2canvas还提供了一些方法,可以在渲染过程中进行操作。 #### `html2canvas.cancel()` 取消当前的渲染过程。 ```javascript var promise = html2canvas(document.body); promise.cancel(); ``` #### `html2canvas.punish()` 和 `html2canvas.reward()` 这两个方法用于惩罚或奖励html2canvas的性能。默认情况下,html2canvas会尝试使用最快速的方式进行渲染,但在某些情况下,它可能会导致渲染失败或产生低质量的图像。使用`punish()`方法可以告诉html2canvas尝试使用更准确的但更慢的渲染方法,而使用`reward()`方法可以告诉html2canvas尝试使用更快的但可能会产生低质量图像的渲染方法。 ```javascript html2canvas(document.body, { onrendered: function(canvas) { if (canvas.width > 500) { html2canvas.punish(); html2canvas(document.body, { onrendered: function(canvas) { // ... } }); } else { html2canvas.reward(); } } }); ``` ### 事件 html2canvas还提供了一些事件,可以在渲染过程中进行操作。 #### `onbeforeload` 在加载跨域图片之前触发。可以使用它来修改图片的URL。 ```javascript html2canvas(document.body, { onbeforeload: function(image) { if (image.src.indexOf('http://example.com/') === 0) { image.src = 'http://proxy.example.com/?url=' + encodeURIComponent(image.src); } } }); ``` #### `onload` 在图片加载完成后触发。 ```javascript html2canvas(document.body, { onload: function(image) { console.log('Image loaded:', image.src); } }); ``` #### `onclone` 在克隆DOM元素之前触发。可以使用它来修改DOM元素的样式或内容。 ```javascript html2canvas(document.body, { onclone: function(clone) { clone.querySelectorAll('img').forEach(function(img) { img.src = '/path/to/placeholder.png'; }); } }); ``` #### `onrendered` 在渲染完成后触发。渲染结果将作为参数传递给该事件处理函数。 ```javascript html2canvas(document.body, { onrendered: function(canvas) { console.log('Canvas rendered:', canvas); } }); ``` ### 错误处理 html2canvas可能会产生一些错误,例如渲染失败或跨域资源不可用。以下是一些常见的错误类型及其处理方法。 #### tainted canvas 当尝试从包含跨域图片的canvas中提取数据时,浏览器会抛出`tainted canvas`错误。如果要允许绘制跨域图片,请将`allowTaint`选项设置为`true`。 ```javascript html2canvas(document.body, { allowTaint: true }); ``` #### SecurityError 当尝试读取跨域iframe中的内容时,浏览器会抛出`SecurityError`错误。如果要允许在canvas中绘制外部对象,请将`foreignObjectRendering`选项设置为`true`。 ```javascript html2canvas(document.body, { foreignObjectRendering: true }); ``` #### NS_ERROR_NOT_AVAILABLE 当尝试读取跨域资源时,浏览器会抛出`NS_ERROR_NOT_AVAILABLE`错误。如果要使用跨域代理来加载跨域资源,请将`proxy`选项设置为代理的URL地址。 ```javascript html2canvas(document.body, { proxy: 'http://proxy.example.com/' }); ``` ### 支持的浏览器 html2canvas支持所有现代浏览器和IE9及以上版本。请注意,它需要浏览器支持`<canvas>`元素和`<foreignObject>`元素。 ## 参考资料 - [html2canvas官网](https://html2canvas.hertzen.com/) - [html2canvas Github仓库](https://github.com/niklasvh/html2canvas)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值