04 canvas——位移画布和旋转缩放

4.1 缩放

  • scale() 方法缩放当前绘图,更大或更小
  • 语法:context.scale(scalewidth,scaleheight)
  • scalewidth : 缩放当前绘图的宽度 (1=100%, 0.5=50%, 2=200%, 依次类推)
  • scaleheight : 缩放当前绘图的高度 (1=100%, 0.5=50%, 2=200%, etc.)
  • 注意:缩放的是整个画布,缩放后,继续绘制的图形会被放大或缩小

4.2 位移画布

  • ctx.translate(x,y) 方法重新映射画布上的 (0,0) 位置
  • x: 添加到水平坐标(x)上的值
  • y: 添加到垂直坐标(y)上的值
  • 发生位移后,相当于把画布的0,0坐标 更换到新的x,y的位置,所有绘制的新元素都被影响
  • 位移画布一般配合缩放和旋转等

4.3 旋转

  • context.rotate(angle); 方法旋转当前的绘图
  • 注意参数是弧度(PI),如需将角度转换为弧度,请使用 degrees*Math.PI/180 公式进行计算

4.4 绘制环境保存和还原

  • ctx.save() 保存当前环境的状态
  • 可以把当前绘制环境进行保存到缓存中。
  • ctx.restore() 返回之前保存过的路径状态和属性
  • 获取最近缓存的ctx
  • 一般配合位移画布使用

4.5 设置绘制环境的透明度(了解)

  • context.globalAlpha=number;
  • number:透明值。必须介于 0.0(完全透明) 与 1.0(不透明) 之间
  • 设置透明度是全局的透明度的样式

案例:

<div>
        <canvas id="canvas">
            您当前浏览器不支持canvas,请升级浏览器
        </canvas>
 </div>
<script>
        (function () {
            var canvas = document.querySelector(‘#canvas‘);
            var ctx = canvas.getContext(‘2d‘);
            canvas.width = 600;
            canvas.height = 600;
            canvas.style.border = "1px solid #000";

            /*状态ctx1*/
            ctx.fillStyle = ‘red‘;
            ctx.fillRect(10,10,100,100);

            ctx.save();/*保存状态1*/

            /*新的状态ctx2*/
            ctx.translate(200,200);//把整个画布位移到(200,200)
             ctx.rotate(30*Math.PI/180);//把整个画布旋转30度
             ctx.scale(2,2);//把整个画布放大x和y方向各2倍
             ctx.globalAlpha = .3;//设置透明度
             ctx.fillStyle = ‘skyblue‘;
            ctx.moveTo(0,0);
            ctx.lineTo(400,0);
            ctx.moveTo(0,0);
            ctx.lineTo(0,400);
            ctx.stroke();
            ctx.fillRect(10,10,40,40);

            ctx.restore();//把上次保存的状态1还原
            /*状态1开始*/
            ctx.fillRect(150,100,100,100);

        })();
    </script>
时间: 2024-10-09 10:18:23

04 canvas——位移画布和旋转缩放的相关文章

Android图片旋转,缩放,位移,倾斜,对称完整示例(一)——imageView.setImageMatrix(matrix)和Matrix

MainActivity如下: import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ImageView; import android.app.Activity; import android.graphics.Matrix; /** * Demo描述:

Android图片旋转,缩放,位移,倾斜,对称完整示例(二)——Bitmap.createBitmap()和Matrix

MainActivity如下: package cc.c; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.widget.ImageView; /** * Demo描述: * 利用B

canvas中实现旋转缩放的方块

canvas实现旋转缩放的方块 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> body{background: #000;} #ca{background:#999} </style> <script> window.onload=function(){ var oc=do

[WebGL入门]十七,递归处理和移动?旋转?缩放

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 模型坐标变换矩阵的好处 上次,通过操作模型坐标变换矩阵,绘制了多个模型.这次,继续在此基础上,给多个模型再添加上旋转和放大缩小等处理.看过上一篇文章的人应该知道,在3D渲染的世界里,利用VBO和一部分坐标变换矩阵,只需要少量修改,就可以绘制出大量的模型.当然,计算量也

Canvas对画布及文字控制基础API学习

这次纯API练习,比较简单,但是是为了之后的结合项目打基础的,所以也不能忽视它,下面开始: Canvas的平移.旋转.缩放 ①.Canvas的平移: ②.Canvas的旋转: ③.Canvas的缩放: 绘制文本 ①.绘制文本: ②.设置文本大小: ③.设置文本粗体: ④.设置文本下划线: ⑤.设置文本中划线: ⑥.设置文本对齐方式: ⑦.设置文本x方向缩放:

【安卓】自定义基于onDraw的任意动画(不仅仅是平移/旋转/缩放/alpha)、!

思路: 1.基于时间的显示映射.如:给定度数,显示圆弧,加上时序,即可有圆弧动画的效果 2.给定时序.用于驱动动画的一帧帧绘制 方案一.基于ObjectAnimator.动画运作时会调用degree对应set函数(基于放射调用),即setDegree. ObjectAnimator ani=ObjectAnimator.ofInt(myView, "degree", 0,300); ani.start(); 注:1>混编后,默认会将setDegree混掉,导致找不到函数,故混编后

IOS开发UI篇—手势识别器(拖拽+旋转+缩放)

IOS开发UI篇—手势识别器(拖拽+旋转+缩放) 一.拖拽 示例代码: 1 // 2 // YYViewController.m 3 // 06-拖拽事件 4 // 5 // Created by apple on 14-6-19. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import "YYViewController.h" 10 11 @interface YYViewController ()

iOS 开发----CGAffineTransform平移,旋转,缩放

在做平移,旋转,缩放的时候一定要记住三个步骤: 获取值(获取当前控件的 transform 属性值) 修改值(修改需要设置的 transform 属性值) 赋值   (将修改的 transform 属性的值赋给原来的值) /**   *  平移   *   *  @param transform 获取当前的形变 transform   *  @param tx        沿着 x 水平方向的平移   *  @param ty        沿着 y 垂直方向的平移   *   *  @ret

纯代码transform位移伸缩和旋转

1 // 2 // LWTViewController.m 3 // 纯代码位移和伸缩作业 4 // 5 // Created by apple on 14-5-20. 6 // Copyright (c) 2014年 lwt. All rights reserved. 7 // 8 9 #import "LWTViewController.h" 10 #pragma mark 定义常量 11 /** 图片距离顶部的高度 */ 12 #define KImageY 60 13 /**