当前位置: 首页 > news >正文

45-使用scale实现图形缩放

45-使用scale实现图形缩放_哔哩哔哩_bilibili45-使用scale实现图形缩放是一次性学会 Canvas 动画绘图(核心精讲+50个案例)2023最新教程的第46集视频,该合集共计53集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV16T411B7kP?spm_id_from=333.788.videopod.episodes&vd_source=9218320e7bcc2e793fa8493559f4acd7&p=46

先使用缩放 .scale() ,再填充内容 ,fillRect() ,关键句:

context.scale(1.3, 1);
context.fillStyle = "red";
context.fillRect(0, 0, 100, 100); // 红色矩形,横向拉伸 1.3 倍

因为没有清空画布,所以最后小绿色正方形会覆在第二个蓝色正方形上面,效果图:

【完整代码】

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>canvas {background-color: #ccc;display: block;margin: auto;}</style>
</head><body>
</body>
<script>const canvas = document.createElement('canvas');canvas.width = 600;canvas.height = 400;document.body.append(canvas);const context = canvas.getContext('2d');// canvas的位移api// 所有的位置变换都是基于原点的变化(左上角)// 在0,0初始位置绘制方形,之后它会根据translate进行100,100的偏移// context.translate(100, 100)// 缩放context.scale(1, 1)context.fillRect(0, 0, 100, 100)// 第一个 timeout(2000ms)setTimeout(function () {context.save();context.scale(1.3, 1);context.fillStyle = "red";context.fillRect(0, 0, 100, 100); // 红色矩形,横向拉伸 1.3 倍context.restore();}, 2000);// 第二个 timeout(3000ms)setTimeout(function () {context.save();context.scale(1.3, 1.5);context.fillStyle = "blue";context.fillRect(0, 0, 100, 100); // 蓝色矩形,横向 1.3 倍,纵向 1.5 倍context.restore();}, 3000);// 第三个 timeout(4000ms)setTimeout(function () {context.save();context.scale(0.5, 0.5);context.fillStyle = "green";context.fillRect(0, 0, 100, 100); // 绿色矩形,缩小到 10x10 像素context.restore();}, 4000);
</script></html>

http://www.dtcms.com/a/267535.html

相关文章:

  • 探索 .NET 桌面开发:WinForms、WPF、.NET MAUI 和 Avalonia 的全面对比(截至2025年7月)
  • 炼丹炉 TD-trainer 的安装与部署,LoRA、dreambooth
  • <三>Sping-AI alibaba 文生图
  • Cursor/VScode ,点击运行按钮,就打开新的终端,如何设置为在当前终端运行文件而不是重新打开终端----一招搞定篇
  • 数字孪生技术引领UI前端设计新潮流:虚拟现实的深度集成
  • 在sf=0.1时测试fireducks、duckdb、polars的tpch
  • OpenLayers 设置线段样式
  • 深入学习c++之---AVL树
  • 支持零样本和少样本的文本到语音48k star的配音工具:GPT-SoVITS-WebUI
  • 完成ssl不安全警告
  • DQL-6-分页查询
  • Redis的编译安装
  • PVE DDNS IPV6
  • 超详细yolo8/11-detect目标检测全流程概述:配置环境、数据标注、训练、验证/预测、onnx部署(c++/python)详解
  • Altium Designer使用教程 第一章(Altium Designer工程与窗口)
  • ESXi 8.0 SATA硬盘直通
  • python-字符串
  • 量化可复用的UI评审标准(试验稿)
  • OPENPPP2 VDNS 核心域模块深度解析
  • 电源管理芯片(PMIC) 和 电池管理芯片(BMIC)又是什么?ING
  • webpack+vite前端构建工具 -11实战中的配置技巧
  • 合肥工会入会的注意事项和常见问答
  • springBoot接口层时间参数JSON序列化问题,兼容处理
  • Modbus_TCP_V4 客户端
  • Day52
  • 人工智能-基础篇-18-什么是RAG(检索增强生成:知识库+向量化技术+大语言模型LLM整合的技术框架)
  • ES6-in 的用法
  • Apollo自动驾驶系统中Planning(路径规划)模块的架构设计和核心逻辑
  • leetcode86.分隔链表
  • 1. 两数之和 (leetcode)