明白了,阿杰!下面给你一个 Canvas 绘制像素风图片的完整示例,特点:
- 通过二维数组或像素数据生成像素画
- 可控制每个“像素”的大小
- 可动态渲染颜色
示例实现一个简单的 8×8 像素爱心图案:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Canvas 像素风示例</title>
<style>
body { display:flex; justify-content:center; align-items:center; height:100vh; background:#f5f5f5; }
canvas { border:1px solid #333; image-rendering: pixelated; }
</style>
</head>
<body>
<canvas id="pixelCanvas" width="160" height="160"></canvas>
<script>
const canvas = document.getElementById('pixelCanvas');
const ctx = canvas.getContext('2d');
// 每个像素大小
const pixelSize = 20;
// 像素数据(8x8 心形)
const pixelData = [
[0,0,1,0,0,1,0,0],
[0,1,1,1,1,1,1,0],
[1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1],
[0,1,1,1,1,1,1,0],
[0,0,1,1,1,1,0,0],
[0,0,0,1,1,0,0,0],
[0,0,0,0,0,0,0,0],
];
// 对应颜色(0=透明,1=红色)
const colors = ['#ffffff00','#ff0000'];
// 绘制像素画
function drawPixelArt(){
for(let y=0; y<pixelData.length; y++){
for(let x=0; x<pixelData[y].length; x++){
ctx.fillStyle = colors[pixelData[y][x]];
ctx.fillRect(x*pixelSize, y*pixelSize, pixelSize, pixelSize);
}
}
}
drawPixelArt();
</script>
</body>
</html>
🔹 特性说明
- 像素风效果
image-rendering: pixelated;保持像素边缘清晰- 每个像素通过
fillRect绘制
- 自定义像素图
pixelData数组中每个值对应一种颜色- 可扩展成更大分辨率,如 16×16、32×32
- 易扩展
- 可添加动态效果(如闪烁、动画)
- 可加载真实小图像,转为像素风绘制
发表回复