【一天一个canvas】Canvas画布调整之移动、缩放、旋转(九)

有些人有些不解,为什么Canvas的坐标是从左上角开始的,而且向下是Y的正方向,向右是X的正方向?其实我也很不理解~~

为什么就不能给我们更多的自定义功能呢?下面我改写了一段Canvas画布调整的代码,包含了Canvas画布的移动、缩放和旋转等相关功能

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<style type="text/css">
    body{margin:20px auto; padding:0; width:1000px }
    canvas{border:dashed 2px #ccc}
    span{font-size:16px; cursor:pointer}
</style>
<script type="text/javascript">
    function $$(id){
        return document.getElementById(id);
    }
    function drawRect(co){
        var can = $$(‘can‘);
        cans = can.getContext(‘2d‘);
        cans.strokeStyle = co;
        cans.lineWidth = 3;
        cans.strokeRect(600,50,80,40);
    }
    function drawCircle(co){
        cans.beginPath();
        cans.arc(30,30,30,0,Math.PI*2,1);
        cans.closePath();
        cans.strokeStyle = co;
        cans.lineWidth = 3;
        cans.stroke();
    }
    function mv_click(){
        var can = $$(‘can‘);
        var cans = can.getContext(‘2d‘);
        cans.translate(40,40);
        drawRect(‘black‘);
    }
    function zoom_click(){
        var can = $$(‘can‘);
        var cans = can.getContext(‘2d‘);
        drawCircle(‘red‘);
        cans.scale(0.5,1.5);
        drawCircle(‘green‘);
    }
    function rotate_click(){
        var can = $$(‘can‘);
        var cans = can.getContext(‘2d‘);
        cans.rotate(Math.PI*2/360*45);
        drawRect(‘green‘);
        cans.rotate(-Math.PI/4);
        drawRect(‘black‘);
    }
</script>
<body >
    <canvas id="can" width="1000px" height="800px"></canvas>
    <span onclick="mv_click();"><mark>移动</mark></span>
    <span onclick="zoom_click();"><mark>缩放</mark></span>
    <span onclick="rotate_click();"><mark>旋转</mark></span>
</body>
</html>

注意:调整了画布后,以后的操作就按照调整后的,千万注意坐标哦

移动功能:

缩放功能:

旋转功能:

时间: 2024-11-11 08:05:42

【一天一个canvas】Canvas画布调整之移动、缩放、旋转(九)的相关文章

Delphi中canvas(画布)的运用

在DELPHI为编程者提供了一个灵活的绘图场所,即本文所述的    CANVAS类,在DELPHI中的很多控件都具有此属性,使编程者可以    在这些的控件的表面随心所欲的绘图,这对完善用户界面或者制    作一些屏幕特技都有着非凡的作用,下面举例说明几种特殊屏幕    效果的形成过程.       一.CANVAS必备基本知识:       1.具有CANVAS属性的控件:    TBitmap,TComboBox,TDBComboBox,TDBGrid,TDBListBox,TDirecto

HTML5 Canvas(画布)实战编程初级篇:基本介绍和基础画布元素

欢迎大家阅读HTML5 Canvas(画布)实战编程初级篇系列,在这个系列中,我们将介绍最简单的HTML5画布编程.包括: 画布元素 绘制直线 绘制曲线 绘制路径 绘制图形 绘制颜色,渐变和图案 绘制图片 绘制文本 相关要求 环境要求:Google Chrome, Firefox, Safari, Opera, 或者 IE9以上的现代浏览器 编程要求:需要有基础的HTML和Javascript编程经验,相关的画布编程将调用Javascript API来处理 HTML Canvas基本元素 HTM

赵雅智_运用Bitmap和Canvas实现图片显示,缩小,旋转,水印

上一篇已经介绍了Android种Bitmap和Canvas的使用,下面我们来写一个具体实例 http://blog.csdn.net/zhaoyazhi2129/article/details/32136179 运行效果: 主要代码 package com.example.guaguale; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import and

一个简单的导弹自动追踪以及实时图片旋转算法,Python-pygame代码实现

自动追踪算法,在我们设计2D射击类游戏时经常会用到,这个听起来很高大上的东西,其实也并不是军事学的专利,在数学上解决的话需要去解微分方程, 这个没有点数学基础是很难算出来的.但是我们有了计算机就不一样了,依靠计算机极快速的运算速度,我们利用微分的思想,加上一点简单的三角学知识,就可以实现它. 好,话不多说,我们来看看它的算法原理,看图: 由于待会要用pygame演示,他的坐标系是y轴向下,所以这里我们也用y向下的坐标系. 算法总的思想就是根据上图,把时间t分割成足够小的片段(比如1/1000,这

WPF之路——Canvas布局(画布)

Canvas为容器控件,用于定位 1.基本应用 可以把Canvas比作一个坐标系,所有的元素通过设置坐标来决定其在坐标系中的位置.这个坐标系的原点并不是在中央,而是位于它的左上角.见下图 元素设置坐标的方法共有四个: Canvas.Top     设置元素距Canvas顶部的距离 Canvas.Bottom  设置元素距Canvas底部的距离 Canvas.Left     设置元素距Canvas左边界的距离 Canvas.Right    设置元素距Canvas右边界的距离 [html] vi

04 canvas&mdash;&mdash;位移画布和旋转缩放

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) 方法重新映射画布上

HTML5之canvas 7画布旋转

1 <html> 2 <head> 3 <meta charset="UTF-8"> 4 <title>画布旋转</title> 5 <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> 6 7

html5 canvas清空画布方法(转)

总结以下三种清空canvas画布的方式: 1. 最简单的方法:由于canvas每当高度或宽度被重设时,画布内容就会被清空,因此可以用以下方法清空: function clearCanvas() { var c=document.getElementById("myCanvas"); var cxt=c.getContext("2d"); c.height=c.height; } 2. 使用clearRect方法: function clearCanvas() { v

canvas固定画布

canvas作为非常方便的HTML绘图工具在web端的应用是非常多了. 那么会碰到一个问题,开始绘图的时候,网页总是晃动. 怎么办呢?只需在获取鼠标(触点)移动坐标的时候,添加清除默认动作就可以了. //获取鼠标移动时的坐标 canvas.ontouchmove = function(e){ e.preventDefault(); } e.preventDefault();这行代码根据业务实际情况选择插入位置.但一定是在ontouchmove 函数内. 原文地址:https://www.cnbl