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

canvas基础2 -- 形状

 七巧板

七巧板本质上就是 分别由几个直线 拼成一个个图形,再将这些图形结合起来

var tangram = [{ p: [{ x: 0, y: 0 }, { x: 800, y: 0 }, { x: 400, y: 400 }], color: "#caff67" },{ p: [{ x: 0, y: 0 }, { x: 400, y: 400 }, { x: 0, y: 800 }], color: "#67beef" },{ p: [{ x: 800, y: 0 }, { x: 800, y: 400 }, { x: 600, y: 600 }, { x: 600, y: 200 }], color: "#ef3d61" },{ p: [{ x: 600, y: 200 }, { x: 600, y: 600 }, { x: 400, y: 400 }], color: "#f9f5la" },{ p: [{ x: 400, y: 400 }, { x: 600, y: 600 }, { x: 400, y: 800 }, { x: 200, y: 600 }], color: "#a594c0" },{ p: [{ x: 200, y: 600 }, { x: 400, y: 800 }, { x: 0, y: 800 }], color: "#fa8ecc" },{ p: [{ x: 800, y: 400 }, { x: 800, y: 800 }, { x: 400, y: 800 }], color: "#f6ca29" }]const canvas = document.getElementById('canvas')canvas.width = 800canvas.height = 800const context = canvas.getContext('2d')for (let i = 0; i < tangram.length; i++) {draw(tangram[i], context)}function draw(piece, cxt) {cxt.beginPath()cxt.moveTo(piece.p[0].x, piece.p[0].y)for (var i = 1; i < piece.p.length; i++) {cxt.lineTo(piece.p[i].x, piece.p[i].y)}cxt.closePath()cxt.fillStyle = piece.colorcxt.fill()cxt.strokeStyle = "black"cxt.lineWidth = 3cxt.stroke()}

图示:

箭头

    context.beginPath()context.moveTo(100, 350) context.lineTo(500, 350) context.lineTo(500, 200) context.lineTo(700, 400)context.lineTo(500, 600)context.lineTo(500, 450)context.lineTo(100, 450)context.closePath()context.lineWidth = 5  context.strokeStyle = '#058'context.stroke() 

图示:

1

相关文章:

canvas基础2 -- 形状

七巧板 七巧板本质上就是 分别由几个直线 拼成一个个图形&#xff0c;再将这些图形结合起来 var tangram [{ p: [{ x: 0, y: 0 }, { x: 800, y: 0 }, { x: 400, y: 400 }], color: "#caff67" },{ p: [{ x: 0, y: 0 }, { x: 400, y: 400 }, { x: 0, y: 800 }], col…...

TCP/IP(五)TCP的连接管理(二)三次握手细节

一 ISN序列号探究 本文主要探究三次握手建立TCP连接的细节备注&#xff1a; 某些问题探究的比较深入,当前用不到,暂时通过链接引入进来吃水不忘挖井人&#xff1a; 小林 coding ① 初始序列号 ISN 是如何随机产生的 ISN: 初始化序列号 Initial Sequence Number 接收方和…...

Vue Elememt 链接后端

get&#xff1a; //async 标记为异步请求 // get 直接获取路径并 axios.get(api/user/selectUserAll,{ params:{ "tiaoshu":this.tiaoshu, "pageSize":this.currentPage, } }) .then((res…...

XPS光电子谱峰与俄歇电子谱峰-科学指南针

在做 X 射线光电子能谱(XPS)测试时&#xff0c;科学指南针检测平台工作人员在与很多同学沟通中了解到&#xff0c;好多同学仅仅是通过文献或者师兄师姐的推荐对XPS有了解&#xff0c;但是对于其原理还属于小白阶段&#xff0c;针对此&#xff0c;科学指南针检测平台团队组织相关…...

STM32F4X I2C LM75

STM32F4X I2C LM75 I2C协议讲解I2C接线I2C协议波形I2C起始信号I2C停止信号I2C应答信号I2C寻址I2C地址格式 I2C数据传输 LM75ALM75A介绍LM75A引脚说明LM75A地址LM75A寄存器LM75A I2C协议写配置寄存器读配置寄存器写Tos和Thyst寄存器读Tos Thyst Temp寄存器LM75A温度计算 LM75A例…...

“华为杯”研究生数学建模竞赛2019年-【华为杯】F题:智能飞行器航迹规划模型(下)(附优秀论文及Pyhton代码实现)

目录 7.3 模型评估 7.3.1 算法的有效性和复杂度 7.3.2 灵敏度分析 8.模型的评价 8.1 模型的优点...

信息系统项目管理师第四版学习笔记——配置与变更管理

配置管理 管理基础 配置管理是为了系统地控制配置变更&#xff0c;在信息系统项目的整个生命周期中维持配置的完整性和可跟踪性&#xff0c;而标识信息系统建设在不同时间点上配置的学科。 配置项的版本号规则与配置项的状态定义相关。例如&#xff1a;①处于“草稿”状态的…...

代理IP端口是什么意思呢?

今天&#xff0c;咱们来聊聊一个小众但很有料的话题——代理IP端口&#xff0c;它可是你纵横互联网世界的好搭子哦&#xff01; 首先&#xff0c;我们得先弄明白&#xff0c;代理IP端口是个啥? 代理IP端口就像是通往网络世界的门票&#xff0c;是你和代理服务器之间的桥梁。…...

如何使用ChatPPT生成PPT文档

简介 ChatPPT是一个基于人工智能的PPT生成工具&#xff0c;可以帮助用户快速生成高质量的PPT文档。ChatPPT使用自然语言处理技术&#xff0c;可以根据用户的指令生成PPT内容、设计和排版。 使用方法 ChatPPT提供了两种使用方式&#xff1a;在线体验版和Office插件版。 在线…...

亚马逊云科技最新分享:人、流程、工具全链路数据安全合规

数据已经是现代发明和创新之源。 企业需要人—流程—工具全链路的数据安全合规。 出品 | CSDN 云计算 端到端、全栈&#xff0c;是近两年我们听到云巨头亚马逊云科技提到最多的架构思路。现在&#xff0c;已经成为生产要素的数据&#xff0c;重要性被提到的非常高的高度&#x…...

Xception:使用Tensorflow从头开始实现

一、说明 近年来&#xff0c;卷积神经网络已成为计算机视觉领域的主要算法&#xff0c;开发设计它们的方法一直是相当的关注。Inception模型似乎能够用更少的参数学习更丰富的表示。它们是如何工作的&#xff0c;以及它们与常规卷积有何不同&#xff1f;本文将用tensorflow实现…...

Practical Memory Leak Detection using Guarded Value-Flow Analysis 论文阅读

本文于 2007 年投稿于 ACM-SIGPLAN 会议1。 概述 指针在代码编写过程中可能出现以下两种问题&#xff1a; 存在一条执行路径&#xff0c;指针未成功释放&#xff08;内存泄漏&#xff09;&#xff0c;如下面代码中注释部分所表明的&#xff1a; int foo() {int *p malloc(4 …...

淘宝天猫商品历史价格API接口

获取淘宝商品历史价格接口的步骤如下&#xff1a; 注册淘宝开放平台&#xff1a;首先在淘宝开放平台上注册一个账号&#xff0c;并进行登录。创建应用&#xff1a;在淘宝开放平台上创建一个应用&#xff0c;并获取该应用的App Key和App Secret&#xff0c;用于后续的接口调用。…...

从0开始学go第七天

gin获取表单from中的数据 模拟简单登录页面&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>login</title> </head><body><form action"/login" method&q…...

【牛客面试必刷TOP101】Day7.BM31 对称的二叉树和BM32 合并二叉树

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;牛客面试必刷TOP101 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&…...

U盘怎么设置为只读?U盘怎么只读加密?

当将U盘设置为只读模式时&#xff0c;将只能查看其中数据&#xff0c;无法对其中数据进行编辑、复制、删除等操作。那么&#xff0c;怎么将U盘设置成只读呢&#xff1f; U盘如何设置成只读&#xff1f; 有些U盘带有写保护开关&#xff0c;当打开时&#xff0c;U盘就会处于只读…...

为什么MyBatis是Java数据库持久层的明智选择

在Java应用程序的开发中&#xff0c;选择合适的数据库持久层框架至关重要。一个明智的选择可以帮助开发人员更好地管理数据库交互、提高性能和简化开发工作。 &#xff08;一&#xff09;为什么要选MyBatis JDBCHibernate / JPAMyBatis简单直接ORM轻量动态SQL关联查询开发效率…...

二叉搜索树--查询节点-力扣 700 题

例题细节讲过(二叉搜索树的基础操作-CSDN博客)&#xff0c;下面给出递归实现 public TreeNode searchBST(TreeNode node, int val) {if(node null) {return null;}if(val < node.val) {return searchBST(node.left, val);} else if(node.val < val) {return searchBST(…...

YOLOv3 | 核心主干网络,特征图解码,多类损失函数详解

https://zhuanlan.zhihu.com/p/76802514) 文章目录 1. 核心改进1.1主干网络1.2 特征图解码1.2.1 检测框&#xff08;位置&#xff0c;宽高&#xff09;解码1.2.2 检测置信度解码1.2.3 类别解码 1.3 训练损失函数1.3.1 正负样本定义1.3.2 损失函数 1. 核心改进 1.1主干网络 更…...

Java架构师API设计

目录 1 导学2 架构师的角度来审视API2.1 API狭隘理解2.2 API广义理解2.3 API的用途不同定义2.4 面向抽象编程的Java开发2.5 API在提高系统的可维护性和可扩展性方面的作用3 架构师必备的API设计原则3.1 标准化原则3.2 易用性原则3.3 扩展性原则3.4 兼容性原则3.5 抽象性原则3.6…...

Radiant Player媒体键集成:揭秘硬件控制背后的技术

Radiant Player媒体键集成&#xff1a;揭秘硬件控制背后的技术 【免费下载链接】radiant-player-mac :notes: Turn Google Play Music into a separate, beautiful application that integrates with your Mac. 项目地址: https://gitcode.com/gh_mirrors/ra/radiant-player-…...

解决PySide6中Qt Designer UI空白问题

在使用PySide6开发桌面应用程序时,经常会遇到将Qt Designer设计的UI文件集成到Python代码中的问题。本文将通过一个实际案例来探讨如何解决UI显示空白的问题。 问题背景 假设你已经用Qt Designer设计了一个复杂的用户界面,包含了多个标签页(QTabWidget),每个标签页内有可…...

HoRain云--Julia运算符全解析

&#x1f3ac; HoRain云小助手&#xff1a;个人主页 &#x1f525; 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;…...

“证死你,证伟我”——波普尔“证伪主义”是逻辑诈骗,1+1=2才是真正的科学

“证死你&#xff0c;证伟我”——波普尔“证伪主义”是逻辑诈骗&#xff0c;112才是真正的科学摘要本文作者以技术专家立场&#xff0c;将波普尔证伪主义定性为“逻辑原罪”与“学术诈骗”。核心指控为六个字&#xff1a;“证死你”——用“不可证伪”剥夺完美理论&#xff08…...

怕 AI 短剧平台抽成?自研 AI 短剧创作系统贴牌合作,全部收益自留

入局 AI 短剧&#xff0c;最头疼就是被平台高额抽成、规则限制、数据锁死。流量自己做、内容自己产&#xff0c;收益却要分走大半&#xff0c;随时还面临限流封号。选源头自研系统贴牌合作&#xff0c;彻底摆脱平台捆绑&#xff0c;所有收益全额自留&#xff0c;干货分点讲透&a…...

ONNX量化模型部署优势:SenseVoice-Small Gradio服务显存占用仅1.2GB实测

ONNX量化模型部署优势&#xff1a;SenseVoice-Small Gradio服务显存占用仅1.2GB实测 1. 引言&#xff1a;当语音识别遇上轻量化部署 想象一下&#xff0c;你开发了一个功能强大的语音识别应用&#xff0c;它支持几十种语言&#xff0c;还能识别说话人的情感和背景音效。但当你…...

从华为实践学IPD:手把手教你写高通过率的Charter文档

华为IPD方法论实战&#xff1a;打造高价值Charter文档的7个关键步骤 在科技企业的研发管理领域&#xff0c;一份优秀的Charter文档往往决定着数千万甚至上亿研发投入的成败。华为IPD&#xff08;集成产品开发&#xff09;体系中的Charter开发流程&#xff0c;被全球众多科技企业…...

28GHz毫米波滤波器设计实战:用SynMatrix快速搞定SIW带通滤波器(附完整参数)

28GHz毫米波滤波器设计实战&#xff1a;SynMatrix工具链的高效应用指南 在毫米波频段&#xff0c;滤波器设计一直是射频工程师面临的重大挑战之一。尤其是当工作频率上升到28GHz甚至更高时&#xff0c;传统设计方法往往陷入反复迭代的泥潭&#xff0c;耗费大量时间在仿真优化与…...

利用快马平台自动化生成contextmenumanager提升前端开发效率

最近在开发一个后台管理系统时&#xff0c;遇到了一个很常见的需求&#xff1a;需要为表格、图表等元素添加右键菜单功能。这种需求看似简单&#xff0c;但实际开发中却要花费不少时间在重复的配置工作上。经过一番摸索&#xff0c;我发现利用InsCode(快马)平台可以大幅提升这类…...

Ostrakon-VL-8B部署指南:快速搭建支持图片问答的智能系统

Ostrakon-VL-8B部署指南&#xff1a;快速搭建支持图片问答的智能系统 1. 系统概述 Ostrakon-VL-8B是一款专为零售和餐饮场景优化的多模态视觉理解系统。它能像人类一样"看懂"图片内容&#xff0c;并回答与图片相关的各种问题。 这个系统基于Qwen3-VL-8B模型微调而…...