canvas绘制重复图案

    canvas的createPattern()可以用于绘制重复图案,它可以接收image元素、canvas元素或video元素作为图案参数,并且可以传入如何重复图案的字符串参数:

  • repeat    ——    为整个区域绘制重复图案
  • repeat-x    ——    只在x方向绘制重复图案
  • repeat-y    ——    只在y方向绘制重复图案
  • no-repeat    ——    不重复,只绘制一张图案

    来看一个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>绘制重复图案</title>
    <style>
        body {
            background: #eee;
        }
        #canvas {
            background: #fff;
            cursor: pointer;
            margin-left: 10px;
            margin-top: 10px;
            -webkit-box-shadow: 4px 4px 8px rgba(0,0,0,0.5);
            -moz-box-shadow: 4px 4px 8px rgba(0,0,0,0.5);
            box-shadow: 4px 4px 8px rgba(0,0,0,0.5);
        }
    </style>
</head>
<body>
    <select id="selectRepeat">
        <option value="repeat">repeat</option>
        <option value="repeat-x">repeat-x</option>
        <option value="repeat-y">repeat-y</option>
        <option value="no-repeat">no-repeat</option>
    </select>
    </br>
    <canvas id="canvas" width="600" height="400"></canvas>

    <script>
        let canvas = document.getElementById('canvas');
        let context = canvas.getContext('2d');
        let selectRepeat = document.getElementById('selectRepeat');
        let image = new Image();
        image.src = "./images/二哈.jpg";

        // 为选项框元素绑定事件,用户可以选择绘制图案的方式
        selectRepeat.addEventListener('change', (event) => {
            let repeat = event.target.value;        // 重复图案的方式
            drawPattern(repeat);
        });

        function drawPattern(repeat){
            // 创建CanvasPattern对象
            let pattern = context.createPattern(image, repeat);
            // 将新创建的CanvasPattern对象赋值给fillStyle属性
            context.fillStyle = pattern;
            // 清除画布
            context.clearRect(0, 0, canvas.width, canvas.height);
            // 绘制图案
            context.fillRect(0, 0, canvas.width, canvas.height);
        }

        image.addEventListener('load', () => {
            drawPattern("repeat");
        });
    </script>
</body>
</html>

    效果:

    需要注意的是,一定要确保图片已经加载完毕了,再开始调用createPattern()函数,否则会报错!

    比较有趣的一点是,canvas绘图环境中的fillStyle属性可以接受css颜色字符串,CanvasGradient对象(用于设置渐变色)以及本文所讲的CanvasPattern对象。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在canvas绘制背景图,你可以使用`drawImage`方法,其中`image`参数是一个图像对象,可以是一个`image`或`canvas`对象。你可以使用`createPattern`方法来设置重复的背景模式。例如,你可以按以下方式设置背景图像: ```javascript var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); var img = new Image(); img.src = 'myBackgroundImage.png'; // 设置背景图像的源地址 img.onload = function() { var pattern = ctx.createPattern(img, 'repeat'); // 创建一个重复的背景图案 ctx.fillStyle = pattern; // 将背景图案作为填充样式 ctx.fillRect(0, 0, canvas.width, canvas.height); // 使用填充样式填充整个画布 } ``` 这段代码将在canvas中创建一个与画布大小相匹配的背景图案,使用`repeat`参数来指定图案重复方式。你可以根据需要选择其他重复方式,如`repeat-x`、`repeat-y`或`no-repeat`。123 #### 引用[.reference_title] - *1* [canvas绘制图片、背景图【从0开始学习canvas—第4篇】](https://blog.csdn.net/weixin_43586120/article/details/104722771)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* *3* [31 canvas使用图片及设置背景](https://blog.csdn.net/u014331138/article/details/109358423)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值