【Canvas与艺术】绘制八角红白蓝相间嵌五星花伞

这篇具有很好参考价值的文章主要介绍了【Canvas与艺术】绘制八角红白蓝相间嵌五星花伞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【关键点】

伞面弧圆心的定位。

【成果图】

【Canvas与艺术】绘制八角红白蓝相间嵌五星花伞,艺术,canva可画,html5

【代码】

<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
     <title>使用Html5/Canvas绘制八角红白蓝相间嵌五星花伞</title>
     <style type="text/css">
     .centerlize{
        margin:0 auto;
        width:1200px;
     }
     </style>
     </head>

     <body οnlοad="init();">
        <div class="centerlize">
            <canvas id="myCanvas" width="12px" height="12px" style="border:1px dotted black;">
                如果看到这段文字说您的浏览器尚不支持HTML5 Canvas,请更换浏览器再试.
            </canvas>
        </div>
     </body>
</html>
<script type="text/javascript">
<!--
/*****************************************************************
* 将全体代码(从<!DOCTYPE到script>)拷贝下来,粘贴到文本编辑器中,
* 另存为.html文件,再用chrome浏览器打开,就能看到实现效果。
******************************************************************/

// canvas的绘图环境
var ctx;

// 高宽
const WIDTH=512;
const HEIGHT=512;

// 舞台对象
var stage;

//-------------------------------
// 初始化
//-------------------------------
function init(){
    // 获得canvas对象
    var canvas=document.getElementById('myCanvas');  
    canvas.width=WIDTH;
    canvas.height=HEIGHT;

    // 初始化canvas的绘图环境
    ctx=canvas.getContext('2d');  
    ctx.translate(WIDTH/2,HEIGHT/2);// 原点平移到画布中央

    // 准备
    stage=new Stage();    
    stage.init();

    // 开幕
    animate();
}

// 播放动画
function animate(){    
    stage.update();    
    stage.paintBg(ctx);
    stage.paintFg(ctx);     

    // 循环
    if(true){
        window.requestAnimationFrame(animate);   
    }
}

// 舞台类
function Stage(){

    // 初始化
    this.init=function(){
        
    }

    // 更新
    this.update=function(){
        
    }

    // 画背景
    this.paintBg=function(ctx){
        ctx.clearRect(-WIDTH/2,-HEIGHT/2,WIDTH,HEIGHT);// 清屏        

        var colors=["red","white","rgb(0,37,96)"];

        ctx.save();
        ctx.rotate(Math.PI/8);
        for(var j=0;j<9;j++){
            var radius=200-j*20;

            for(var i=0;i<8;i++){
                var start=i*Math.PI/4+Math.PI/8;
                var ptStart=createPt(radius*Math.cos(start),radius*Math.sin(start));
                var end=start+Math.PI/4;
                var ptEnd=createPt(radius*Math.cos(end),radius*Math.sin(end));
                var ptArc=createPt(ptStart.x+ptEnd.x,ptStart.y+ptEnd.y);

                ctx.beginPath();
                ctx.moveTo(0,0);
                ctx.lineTo(ptStart.x,ptStart.y);
                ctx.arc(ptArc.x,ptArc.y,radius,end-Math.PI,start-Math.PI,true);
                ctx.closePath();
                ctx.fillStyle=colors[j%3];
                ctx.fill();
                ctx.strokeStyle=colors[j%3];
                ctx.stroke();
            }
        }
        
        // 中央五星
        draw5Star(ctx,0,0,20);
        ctx.fillStyle="white";
        ctx.fill();
        
        ctx.restore();

        // 版权
        ctx.textBaseline="bottom";
        ctx.textAlign="center";
        ctx.font = "8px consolas";
        ctx.fillStyle="black";
        ctx.fillText("逆火原创",WIDTH/2-40,HEIGHT/2-10);
    }

    // 画前景
    this.paintFg=function(ctx){
                
    }
}

// 函数,创建一个二维坐标点
function createPt(x,y){
    var retval={};
    retval.x=x;
    retval.y=y;
    return retval;
}

/*--------------------------------------------------
函数:绘制正五角星的推荐画法
ctx:绘图上下文
x:五角星中心横坐标
y:五角星中心纵坐标
R:五角星中心到顶点的距离
---------------------------------------------------*/
function draw5Star(ctx,x,y,R){
    var r=R*Math.sin(Math.PI/10)/Math.sin(Math.PI/10*7);
    
    var arr=[0,0,0,0,0,0,0,0,0,0];

    // 顶五点
    for(var i=0;i<5;i++){
        var theta=i*Math.PI/5*2-Math.PI/10;
        var x1=R*Math.cos(theta)+x;
        var y1=R*Math.sin(theta)+y;
        arr[i*2]=createPt(x1,y1);
    }

    // 内五点
    for(var i=0;i<5;i++){
        var theta=i*Math.PI/5*2+Math.PI/10;
        var x1=r*Math.cos(theta)+x;
        var y1=r*Math.sin(theta)+y;
        arr[i*2+1]=createPt(x1,y1);
    }

    ctx.beginPath();
    for(var i=0;i<arr.length;i++){
        ctx.lineTo(arr[i].x,arr[i].y);
    }
    ctx.closePath();
}

/*---------------------------------------------
猪到死都不明白,
手拿尖刀杀它的人,
和供应它一日三餐的人是什么关系。

你被什么保护就被什么限制,
能给你遮风挡雨的,
同样能让你不见天日。

设置囚笼囚禁你我的人,
还靠你我提供骄奢淫逸所需。
----------------------------------------------*/
//-->
</script>

【原图】

【Canvas与艺术】绘制八角红白蓝相间嵌五星花伞,艺术,canva可画,html5文章来源地址https://www.toymoban.com/news/detail-853093.html

END

到了这里,关于【Canvas与艺术】绘制八角红白蓝相间嵌五星花伞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • canvas绘制直角梯形(向左)

    查看专栏目录 canvas示例教程100+专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重要的帮助。 如何使用canvas绘制直角梯形呢?方法其实很简单,先

    2024年01月16日
    浏览(70)
  • 学习Canvas基础-绘制矩形

    学习Canvas基础-绘制矩形 canvas提供了三个API,分别是: 1.绘制矩形 rect(起点X, 起点Y, 绘制的矩形width, 绘制的矩形height) 但该方法不会出实际效果,需要配合 fill()和stroke()方法让其显现。 2.绘制一个填充的矩形 fillRect(起点X, 起点Y, 绘制的矩形width, 绘制的矩形height) 3.绘制一

    2023年04月09日
    浏览(60)
  • 小程序 canvas 绘制图片

    绘制图片的问题 1、canvas不能绘制网络图片需要转换成本地图片进行使用 2、多张图片绘制需要调用 img.onload,进行嵌套绘制 html

    2024年02月14日
    浏览(40)
  • Flutter 绘制番外 | 将你的 Canvas 绘制保存为图片

    前言 光阴似箭,《Flutter 绘制指南 - 妙笔生花》 转眼间已经发布两年半了,不知道各位练习得怎么样。有不少朋友问过如何将 Canvas 绘制的内容保存为图片,最近在做的东西刚好涉及了这块,通过本文来分享一下。 提到保存图片,很多人可能会想到 RepaintBoundary , 但它使用起

    2024年02月05日
    浏览(43)
  • Html利用Canvas绘制图形

    今天接到粉丝私信,询问是否可以通过Canvas绘制一些图形,然后根据粉丝提供的模板图,通过Canvas进行模拟绘制,通过分析发现,图形虽然相对简单,但是如果不借助相应的软件,纯代码绘制还是稍微费些时间。今天将绘制图形源码分享出来,仅供学习分享之用,如有不足之

    2024年02月16日
    浏览(49)
  • canvas绘制美队盾牌

    查看专栏目录 canvas示例教程100+专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重要的帮助。 怎样使用canvas绘制美队盾牌呢?这里面要绘制四个不

    2024年01月18日
    浏览(34)
  • 【HTML5】 canvas 绘制图形

    canvas 标签:可用于在网页上绘制图形(使用 JavaScript 在网页上绘制图像) 画布是一个矩形区域,通过控制其每一像素绘制路径、矩形、圆形、字符以及添加图像。 创建一个 canvas :width 和 height 是必备属性,id 是为了在 js 中获取改元素。 在 js 中绘制 canvas 2.0、方法属性 co

    2024年01月18日
    浏览(48)
  • canvas详解03-绘制图像和视频

    canvas 更有意思的一项特性就是图像操作能力。可以用于动态的图像合成或者作为图形的背景,以及游戏界面(Sprites)等等。浏览器支持的任意格式的外部图片都可以使用,比如 PNG、GIF 或者 JPEG。你甚至可以将同一个页面中其他 canvas 元素生成的图片作为图片源。 引入图像到

    2024年02月11日
    浏览(41)
  • canvas 绘制图片 - ctx.drawImage()

    canvas的左上角位置为 (0, 0) ctx.drawImage(图片对象, x位置, y位置) 图片的原始比例,图片的左上角在画布的(x, y) ctx.drawImage(图片对象, x位置, y位置, 宽度, 高度) 图片的左上角在画布的(x, y),指定图片的宽高 ctx.drawImage(图片对象, 图像裁剪的x位置, 图像裁剪的y位置, 裁剪的宽度, 裁剪

    2024年02月10日
    浏览(31)
  • 微信小程序使用canvas绘制网络图片,使用canvas将图片变成圆形

    以上的写法 会造成某些图标无法绘制上去, 解决方法是在网络图片中不断嵌套,先绘制大图片,再绘制小图片的顺序 网上说使用先下载到本地,再使用img.src加载,我尝试过还是不行 长用在海报,需要将用户的头像画到canvas图片上,如: 其原理就是在图片上面放一个圆

    2024年02月13日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包