HTML5 Cavans(8) 图像

$代表jquery

复制代码
        window.onload = function () {
            var cancans = document.getElementById("myCanvas");
            //得到2D渲染上下文
            var context = document.getElementById("myCanvas").getContext("2d");

            var img = new Image();
            img.width = "500";
            img.height = "400";
            img.src = "images/canvas.png";
            $(img).load(function () {

                //context.drawImage(img, 0, 0); //默认图片大小
                //context.drawImage(img, 10, 10, 100, 100)//指定大小
                context.shadowBlur = 20;
                context.shadowColor = "blue";
                //图片裁剪 
                //参数 源图,源图原点x,y坐标,源图在原点开始的宽长,画布开始画的点x,y,宽长
                //drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);

                //万花筒效果
                //右下
                context.translate(200, 200);
                context.drawImage(img, 0, 0, 500, 500, 0, 0, 200, 200);

                //左下
                //先缩放,画布坐标已经改变,(-200,200)为原(200,200)位置
                context.setTransform(1, 0, 0, 1, 0, 0);
                context.scale(-1, 1);
                context.translate(-200, 200);
                context.drawImage(img, 0, 0, 500, 500, 0, 0, 200, 200);

                //左上
                //先定位,不需要重新转换位置
                context.setTransform(1, 0, 0, 1, 0, 0);
                context.translate(200, 200);
                context.scale(-1, -1);
                context.drawImage(img, 0, 0, 500, 500, 0, 0, 200, 200);

                //右上
                context.setTransform(1, 0, 0, 1, 0, 0);
                context.translate(200, 200);
                context.scale(1, -1);
                context.drawImage(img, 0, 0, 500, 500, 0, 0, 200, 200);

            });

        };
复制代码
### 关于 Canvas 的炫酷效果与示例 Canvas 是 HTML5 提供的强大工具之一,能够用于绘制图形、动画以及创建各种交互式的视觉效果。以下是几个基于 Canvas 的炫酷效果及其可能的应用场景: #### 1. 颗粒涟漪效果 通过 Vue2 和 Canvas 结合可以实现动态的颗粒涟漪效果[^1]。这种效果通常由鼠标点击触发,在画布上生成一系列扩散的圆形波纹。其实现原理主要是利用了 Canvas 的 `clearRect` 方法清除旧帧,并使用 `arc` 绘制新的圆环。 ```javascript function drawRipple(ctx, x, y, radius, color) { ctx.beginPath(); ctx.arc(x, y, radius, 0, Math.PI * 2); ctx.fillStyle = color; ctx.fill(); } ``` #### 2. 流星雨特效 流星雨是一种经典的 Canvas 动效,可以通过随机生成多个下落的小球来模拟星星划过夜空的效果。其核心逻辑在于不断更新小球的位置并重新渲染整个画面。 ```javascript class Star { constructor(canvasWidth, canvasHeight) { this.x = Math.random() * canvasWidth; this.y = Math.random() * canvasHeight; this.speedY = Math.random() * 5 + 2; // 下降速度 } update(ctx) { ctx.fillRect(this.x, this.y, 2, 2); // 小方块代表星星 this.y += this.speedY; if (this.y > ctx.canvas.height) { // 如果超出边界则重置位置 this.y = -10; this.x = Math.random() * ctx.canvas.width; } } } ``` #### 3. 图片像素化过渡 将图片分解成一个个小格子,并让这些格子逐渐移动到目标位置形成最终图像的过程称为像素化过渡。这需要先加载一张背景图再逐层显示细节。 ```html <canvas id="pixelate"></canvas> <script> const img = new Image(); img.src = 'example.jpg'; img.onload = () => { const c = document.getElementById('pixelate'); const ctx = c.getContext('2d'); function renderPixelated(scaleFactor) { let w = img.width / scaleFactor, h = img.height / scaleFactor; for(let i=0;i<img.width;i+=w){ for(let j=0;j<img.height;j+=h){ ctx.drawImage(img,i,j,w,h,i,j,w,h); } } } }; </script> ``` 以上三种案例均展示了如何运用基础几何形状构建复杂而吸引人的视觉体验。对于初学者来说,这些都是很好的练习项目;而对于有经验开发者而言,则可作为灵感来源去探索更多可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值