html canvas绘制五星红旗
时间: 2023-11-08 17:58:42 浏览: 119
html canvas
以下是使用HTML Canvas绘制五星红旗的示例代码:
```
<!DOCTYPE html>
<html>
<head>
<title>五星红旗</title>
<style>
canvas {
border: 1px solid black;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="600" height="400"></canvas>
<script>
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
// 绘制红底
ctx.fillStyle = "#FF0000";
ctx.fillRect(0, 0, canvas.width, canvas.height);
// 绘制大星星
ctx.fillStyle = "#FFDE00";
ctx.beginPath();
ctx.moveTo(300, 100);
ctx.lineTo(320, 160);
ctx.lineTo(380, 170);
ctx.lineTo(330, 200);
ctx.lineTo(340, 260);
ctx.lineTo(300, 225);
ctx.lineTo(260, 260);
ctx.lineTo(270, 200);
ctx.lineTo(220, 170);
ctx.lineTo(280, 160);
ctx.closePath();
ctx.fill();
// 绘制四个小星星
ctx.beginPath();
ctx.moveTo(340, 130);
ctx.lineTo(350, 150);
ctx.lineTo(370, 150);
ctx.lineTo(355, 165);
ctx.lineTo(365, 185);
ctx.lineTo(340, 170);
ctx.lineTo(315, 185);
ctx.lineTo(325, 165);
ctx.lineTo(310, 150);
ctx.lineTo(330, 150);
ctx.closePath();
ctx.fill();
ctx.translate(300, 200);
ctx.rotate(Math.PI / 5);
ctx.translate(-300, -200);
ctx.beginPath();
ctx.moveTo(340, 130);
ctx.lineTo(350, 150);
ctx.lineTo(370, 150);
ctx.lineTo(355, 165);
ctx.lineTo(365, 185);
ctx.lineTo(340, 170);
ctx.lineTo(315, 185);
ctx.lineTo(325, 165);
ctx.lineTo(310, 150);
ctx.lineTo(330, 150);
ctx.closePath();
ctx.fill();
ctx.translate(300, 200);
ctx.rotate(Math.PI / 5);
ctx.translate(-300, -200);
ctx.beginPath();
ctx.moveTo(340, 130);
ctx.lineTo(350, 150);
ctx.lineTo(370, 150);
ctx.lineTo(355, 165);
ctx.lineTo(365, 185);
ctx.lineTo(340, 170);
ctx.lineTo(315, 185);
ctx.lineTo(325, 165);
ctx.lineTo(310, 150);
ctx.lineTo(330, 150);
ctx.closePath();
ctx.fill();
ctx.translate(300, 200);
ctx.rotate(Math.PI / 5);
ctx.translate(-300, -200);
ctx.beginPath();
ctx.moveTo(340, 130);
ctx.lineTo(350, 150);
ctx.lineTo(370, 150);
ctx.lineTo(355, 165);
ctx.lineTo(365, 185);
ctx.lineTo(340, 170);
ctx.lineTo(315, 185);
ctx.lineTo(325, 165);
ctx.lineTo(310, 150);
ctx.lineTo(330, 150);
ctx.closePath();
ctx.fill();
</script>
</body>
</html>
```
上述代码中,我们首先创建了一个600x400的Canvas元素,并获取了它的2D上下文对象ctx。接着,我们使用ctx的fillRect方法绘制了红底。
然后,我们使用ctx的beginPath、moveTo、lineTo和fill方法绘制了大星星和四个小星星。为了方便绘制小星星,我们使用了Canvas的变换功能,通过调用ctx的translate和rotate方法,将画布旋转了一定角度,使得小星星的绘制更加简洁。
最终,我们得到了一面完整的五星红旗。
阅读全文