HTML学习(5)Canvas绘图

news/2024/7/24 9:33:40 标签: html, 学习, javascript

文章目录

  • HTML5 Canvas
    • HTML5 内联SVG

HTML5 Canvas

使用 Canvas 进行绘图工作,Canvas元素用于在网页上绘制图片。

创建一个Canvas的元素:

html"><canvas id="myCanvas" width="200" height="100"></canvas>

但是Canvas本身没有绘图能力,我们使用 Javascript 来绘制:

html"><!-- 使用javascript进行绘制 -->
<script type="text/javascript">javascript">
    var c=document.getElementById("myCanvas");
    var cxt=c.getContext("2d");
    cxt.fillStyle = "#FF0000";
    cxt.fillRect(10,10,50,50);
</script>
  • document.getElementById可以获取指定的 Convas 的ID。
  • c.getContext创建了一个 Context对象,它拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
  • 我们设置其填充颜色并且在指定坐标绘制了一个矩形。

  • 加餐! 测试鼠标的移动位置(使用javascript

    1. 首先我们先创建一个 矩形区域:
    html"><div id="test_rect" style="float: left; width: 200px; height: 120px;
                     border: 5px solid black" 
                     onmousemove="javascript language-javascript">fun_MouseInMove(event)" onmouseout="javascript language-javascript">fun_MouseOut()"> </div>
    <div id="showInfo"></div> <!-- 文字显示的位置 -->
    

    我们指定了这个矩形区域为 test_rect ID,并且指定了它的宽度与高度,并且设置了 border 为宽度5px,并且使用 black填充,这样我们就创建好了矩形区域了。

    1. 然后我们准备这两个函数:
    <script type="text/javascript">
        function fun_MouseInMove(e){
            var x=e.clientX;
            var y=e.clientY;
            document.getElementById("showInfo").innerHTML = "坐标: (" + x + "," + y + ")";
        }
        function fun_MouseOut(){
            document.getElementById("showInfo").innerHTML = ""; //置空
        }
    </script>
    

    获取坐标,并且得到 showInfo id,显示其信息。

    在这里插入图片描述

    注意:我们获得的坐标是相对于整个窗口 client 的。


更多例子:

画线:通过moveTo移动到某一个位置,然后lineTo来绘制线,最后通过 stroke 来绘制出这条路径。

cxt.moveTo(20,20);
cxt.lineTo(100,100);
cxt.lineTo(150,15);
cxt.stroke();

画圆:通过beingPath来开始一条路径,endPath来结束一条路径,fill来进行填充。

cxt.beginPath();
cxt.arc(50,50,50,0,Math.PI*2,true);
cxt.closePath();
//cxt.stroke(); //绘制,不填充
cxt.fill();     //填充

渐变色:通过createLinearGradient来创建渐变色的开始坐标与结束坐标,addColorStop来创建开始颜色与结束颜色,然后设置填充颜色为此渐变色,然后填充一个一个矩形

var pc=cxt.createLinearGradient(0,0,170,50);
pc.addColorStop(0,"red");
pc.addColorStop(1,"green");
cxt.fillStyle = pc;
cxt.fillRect(0,0,170,50);

插入图片:指定图片的id,然后drawImage即可。

<img src="https://www.w3school.com.cn/i/eg_flower.png" alt="图片" id="pic1">
window.onload = function() {
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    var img = document.getElementById("pic1");
    ctx.drawImage(img,10, 10);
};

HTML5 内联SVG

什么是 SVG?

  • SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
  • SVG 用于定义用于网络的基于矢量的图形
  • SVG 使用 XML 格式定义图形
  • SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失
  • SVG 是万维网联盟的标准

SVG 的优势

与其他图像格式相比(比如 JPEG 和 GIF),使用 SVG 的优势在于:

  • SVG 图像可通过文本编辑器来创建和修改
  • SVG 图像可被搜索、索引、脚本化或压缩
  • SVG 是可伸缩的
  • SVG 图像可在任何的分辨率下被高质量地打印
  • SVG 可在图像质量不下降的情况下被放大

学习链接:

HTML学习(3)


参考链接:Canvas参考手册

HTML Canvas 参考手册


http://www.niftyadmin.cn/n/229391.html

相关文章

信息系统项目管理师-项目采购管理

1.过程 1.1 规划采购管理 记录项目采购决策、明确采购方法&#xff0c;及识别潜在卖方的过程。 1.2 实施采购 获取卖方问答&#xff0c;选择卖方并授予合同的过程。 1.3 控制采购 管理采购关系&#xff0c;监督合同绩效、实施必要的变更和纠偏&#xff0c;以及关闭合同的过程。…

c++STL容器之序列式容器

目录 vector容器 vector对象的默认构造 vector的初始化 vector的遍历 vector的增删改查 vector末尾的添加移除操作 vector的数据存取 deque容器 deque对象的默认构造 deque末尾的添加移除操作 deque的数据存取 stack容器 stack对象的默认构造 stack的push()与po…

Zookeeper源码分析——ZK服务端初始化源码解析

持久化源码 快照 public interface SnapShot {/*** deserialize a data tree from the last valid snapshot and * return the last zxid that was deserialized* 反序列化方法*/long deserialize(DataTree dt, Map<Long, Integer> sessions) throws IOException;/*** …

asp.net车辆管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net车辆管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 asp.net车辆管理系统VS开发sqlserver数…

高级数据结构与算法 | 三元搜索树(Ternary Search Tree)

文章目录TernarySearchTree基本概念介绍原理插入查找删除代码实现TernarySearchTree 基本概念 介绍 Ternary Search Tree&#xff08;三元搜索树&#xff09;&#xff0c;它是由 Bentley 和 Sedgewick 在 1997 年提出的一种基于 Trie 的思想改良的一种数据结构&#xff0c;其…

Redis第二十讲 Redis主从,哨兵,集群模式下的操作

关于redis的操作代码我都放在我都git仓库了,大家可以下载本地学习观看: git地址:Redis Repo Redis client Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server。 Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的…

Unity开发数字化看板-通用的设备运动同步

通用的设备运动同步 通过获取实时采集运动位置&#xff0c;发送到unity程序中&#xff0c;通过比例运算&#xff0c;转换成模型的运动位置&#xff0c;实现虚实同步。 在工业设备中&#xff0c;复杂的运动进行分析、分解&#xff0c;最本质的的运动就是平移和转动&#xff0c…

【机器学习】P17 梯度下降 与 梯度下降优化算法(BGD 等 与 Adam Optimizer、AdaGrad、RMSProp)

梯度下降与梯度下降算法梯度下降梯度下降算法基础优化算法批量梯度下降 BGD随机梯度下降 SGD小批量梯度下降 MBGD动量梯度下降 MGD基础优化算法上的改进和优化的算法自适应梯度算法 Adagrad均方根传播算法 RMSProp自适应矩估计算法 Adam代码如何实现梯度下降如何判断收敛梯度下…