美文网首页
HTML5 Canvas笔记——变换坐标系后的绘图

HTML5 Canvas笔记——变换坐标系后的绘图

作者: 没昔 | 来源:发表于2020-05-20 00:11 被阅读0次

变换坐标系后的绘图:

(1)提供四个文本框(x,y,angle,scale),输入参数值后,将坐标系变换(平移+旋转+缩放)到该位置处;

(2)提供一个检查框,提供对所绘制的图形“是否错切”进行控制;

(3)再提供一个文本框,输入一个单词,将这个单词绘制在新的坐标系中。

从而实现平移、旋转、缩放、错切、绘制5项功能

变换坐标系后绘图.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>变换坐标系后绘图</title>
    <style>
        body {
            background: #eeeeee;
        }
        #canvas {
            background: #ffffff;
            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>
    <div id='controls'>
        平移:
        X:<input type="text" id="newX" />
        Y:<input type="text" id="newY" />
        旋转:<input type="text" id="newAngle" />
        缩放:<input type="text" id="newScale" /> 
        错切: <input type='checkbox' id='ShearCheckbox'/>
        绘制文本:<input type="text" id="newText" />
        <input id='drawButton' type='button' value='绘制'/>
    <canvas id="canvas" width="1500" height="1000"></canvas>
    <script src="变换坐标系后绘图.js"></script>
</body>
</html>

变换坐标系后绘图.js

var canvas = document.getElementById('canvas'),
    context = canvas.getContext('2d'),
    newX = document.getElementById('newX'),    
    newY = document.getElementById('newY'),       
    newAngle = document.getElementById('newAngle'),                   
    newScale = document.getElementById('newScale'),              
    ShearCheckbox = document.getElementById('ShearCheckbox'),  
    newText = document.getElementById('newText'),
    drawButton = document.getElementById('drawButton');
function AxesTrans(){
    var sin=Math.sin(newAngle.value*Math.PI/180),
        cos=Math.cos(newAngle.value*Math.PI/180);
    context.save();
    context.setTransform(newScale.value*cos,sin,-sin,newScale.value*cos,newX.value,newY.value);
}
function AxesShear(){
    context.save();
    context.transform(1,0,0.7,1,0,0);
}
function drawText(){
    context.save();
    context.font='50pt Comic-sans';
    context.fillStyle="cornflowerblue";
    context.fillText(newText.value,0,50);
    context.strokeStyle="yellow";
    context.strokeText(newText.value,0,50);
}
drawButton.onclick=function(e){
    AxesTrans();
    if(ShearCheckbox.checked){
        AxesShear();
    }
    drawText();
}

效果如图所示:


相关文章

网友评论

      本文标题:HTML5 Canvas笔记——变换坐标系后的绘图

      本文链接:https://www.haomeiwen.com/subject/reywohtx.html