canvas-概述

HTML5 Canvas 绘图概述与常见问题

Canvas 上绘制图形是一种即时模式(immediate mode),一旦在 Canvas 上绘制了图形之后,Canvas 将不再知道这个图形的任何信息。被绘制的图形是可见的,但是你不能够操作这个图形,留在上面的只是一些像素

这是 Canvas 和 SVG 不同的地方,SVG 图形是可以被单独操纵的,也可以被重新绘制。在 HTML5 canvas 中如果你想修改绘制的图形,你需要重新绘制所有的东西

用 canvas 绘制图形的基本步骤:

  1. 等待页面 DOM 元素加载完毕
  2. 获取 canvas 元素的引用
  3. 从 canvas 元素中获取 2D 上下文(context)
  4. 从 2D 上下文中使用绘制函数绘制图形
// ...
window.onload = function () {
   
   
  drawExamples();
};
function drawExamples() {
   
   
  const canvas = document.getElementById("myCanvas");
  const context = canvas.getContext("2d");
  context.fillStyle = "#000";
  context.fillRect(100, 100, 100, 100);
}

Canvas 使用的是 W3C 坐标系,坐标空间参考如下:

canvas坐标空间

基础图形分类

详细内容参考 使用 canvas 来绘制图形 - MDN

矩形

context.fillStyle = "#ff0000";
context.fillRect(10, 10, 100, 100);
// context.strokeStyle = "#0000ff";
// context.strokeRect(30, 20, 120, 110);

三角形

ctx.beginPath();
ctx.moveTo(75, 50);
ctx.lineTo(100, 75);
ctx.lineTo(100, 25);
// 会自动让所有形状闭合,区别与stroke
ctx.fill();

线条

ctx.beginPath();
// 定义直线的起点坐标
ctx.moveTo(10, 10);
// 定义直线的终点坐标
ctx.lineTo(50, 10);
// 沿着坐标点顺序的路径绘制直线
// 设置虚线
// cxt.setLineDash([10, 20]) // 10px间隔20px
ctx.st
### 关于 Leaflet Canvas Marker 插件的概述 Leaflet.Canvas-Markers 是一个用于在地图上以更高效的方式显示图标的 Leaflet 插件[^1]。该插件的核心功能是通过使用 HTML5 Canvas 来替代传统的 DOM 元素渲染图标,从而显著提高性能,尤其是在需要处理大量标记的情况下[^4]。 以下是对 Leaflet.Canvas-Markers 的详细介绍: #### 项目基础介绍和主要编程语言 Leaflet.Canvas-Markers 是一个开源项目,旨在优化 Leaflet 地图中大量标记的渲染性能。该项目的主要编程语言为 JavaScript,并且依赖于 HTML5 Canvas API 来实现高效的图标渲染[^2]。开发者可以利用该插件轻松地将传统 DOM 渲染的图标转换为基于 Canvas 的渲染方式。 #### 目录结构及项目组成 Leaflet.Canvas-Markers 的目录结构清晰明了,包含核心插件代码、示例文件以及文档说明。以下是典型的目录结构[^3]: - **src/**:存放插件的核心源代码。 - **examples/**:提供多个示例文件,展示如何在实际项目中使用该插件。 - **docs/**:包含详细的文档说明,帮助开发者快速上手。 - **dist/**:生成的可直接使用的插件文件(如 `leaflet.canvas-markers.js` 和 `leaflet.canvas-markers.min.js`)。 #### 安装与配置指南 要使用 Leaflet.Canvas-Markers 插件,首先需要将其集成到项目中。可以通过以下方式安装[^4]: 1. **从 GitCode 下载**:访问项目地址 [https://gitcode.com/gh_mirrors/le/Leaflet.Canvas-Markers](https://gitcode.com/gh_mirrors/le/Leaflet.Canvas-Markers),下载最新版本的代码。 2. **通过 npm 安装**(如果支持):如果项目支持 npm 包管理器,可以直接运行以下命令安装: ```bash npm install leaflet.canvas-markers ``` 3. **引入插件**:在项目中引入插件文件,例如: ```html <script src="path/to/leaflet.canvas-markers.js"></script> ``` #### 使用方法示例 以下是一个简单的代码示例,展示如何使用 Leaflet.Canvas-Markers 在地图上渲染大量标记: ```javascript // 初始化地图 var map = L.map('map').setView([51.505, -0.09], 13); // 添加瓦片图层 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: '© OpenStreetMap contributors' }).addTo(map); // 创建大量标记 var markers = []; for (var i = 0; i < 1000; i++) { var lat = 51.5 + Math.random() * 0.1; var lng = -0.09 + Math.random() * 0.1; markers.push(L.marker([lat, lng])); } // 使用 Canvas 标记插件渲染标记 L.canvasLayer().addMarkers(markers).addTo(map); ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值