Canvas绘画之文本缩放并旋转

简介: Canvas绘画之文本缩放并旋转

文本缩放并旋转

源码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文本缩放并旋转</title>
    <style>
        #canvas {
            -webkit-box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 4px;
            -moz-box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 4px;
            box-shadow: rgba(0, 0, 0, 0.2) 2px 2px 4px;
            border: 1px solid cornflowerblue;
            background: aqua;
        }
    </style>
</head>
 
<body>
<canvas id="canvas" width="600" height="420">
    Canvas not supported
</canvas>
</body>
<script>
    'use strict';
 
    let canvas = document.getElementById('canvas'),
        context = canvas.getContext('2d'),
        text = '触发旋转',
        angle = Math.PI / 50,
        //顺时针方向
        clockwise = true,
        fontHeight = 128,
        origin = {},
        paused = true,
        scale = 1.008;
 
    //Function……
 
    //画字
    let drawText = () => {
        context.fillText(text, 0, 0);
        context.strokeText(text, 0, 0);
    };
 
    //Event handlers……
 
    canvas.onclick = () => {
        paused = !paused;
        //当启动当时候
        if (!paused) {
            //调换旋转方向
            clockwise = !clockwise;
 
            //减小缩放尺寸
            scale = 1 / scale;
        }
    };
 
    //Animation……
 
    setInterval(() => {
        if (!paused) {
            //清楚缩放后的画布
            context.clearRect(-origin.x, -origin.y, canvas.width, canvas.height);
            //以angle角度旋转画布
            context.rotate(clockwise ? angle : -angle);
            //以scale比例缩放画布
            context.scale(scale,scale);
 
            drawText();
        }
    }, 1000 / 60);
 
    //Init……
 
    context.font = fontHeight + 'px Palatino';
 
    context.fillStyle = 'cornflowerblue';
    context.strokeStyle = 'yellow';
 
    context.shadowColor = 'rgba(100, 100, 150, 0.8)';
    context.shadowOffsetX = 5;
    context.shadowOffsetY = 5;
    context.shadowBlur = 10;
 
    context.textAlign = 'center';
    context.textBaseline = 'middle';
 
    origin.x=canvas.width/2;
    origin.y=canvas.height/2;
 
    //将坐标轴平移到中心位置
    context.transform(1,0,0,1,origin.x,origin.y);
 
    drawText();
 
</script>
</html> 
相关文章
|
6月前
|
前端开发 JavaScript
前端必看的8个HTML+CSS技巧 (六) 裁剪图像的动画
前端必看的8个HTML+CSS技巧 (六) 裁剪图像的动画
|
4月前
|
前端开发
Canvas绘画之图像合成,图像层叠效果
Canvas绘画之图像合成,图像层叠效果
|
4月前
|
存储 前端开发 JavaScript
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(一)
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(一)
402 0
|
4月前
|
机器学习/深度学习 前端开发 算法
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(二)
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(二)
77 0
|
4月前
|
前端开发
Canvas绘画之简单的多边形绘画
Canvas绘画之简单的多边形绘画
|
4月前
|
前端开发
Canvas绘画之多边形画板,绘制多边形,携带背景图和绘画功能,带有全部清除的功能,用这个
Canvas绘画之多边形画板,绘制多边形,携带背景图和绘画功能,带有全部清除的功能,用这个
|
5月前
|
前端开发
canvas图像阴影处理
canvas图像阴影处理
|
6月前
|
前端开发 API
canvas详解03-绘制图像和视频
canvas详解03-绘制图像和视频
84 1
|
前端开发 JavaScript
canvas中的拖拽、缩放、旋转 (上) —— 数学知识准备
canvas中的拖拽、缩放、旋转 (上) —— 数学知识准备
890 0
canvas中的拖拽、缩放、旋转 (上) —— 数学知识准备
|
缓存 算法 前端开发
canvas绘制图像轮廓效果
canvas绘制图像轮廓效果
canvas绘制图像轮廓效果