首页 > 其他分享 >html5新标签 画布 canvas 替代了 flash

html5新标签 画布 canvas 替代了 flash

时间:2024-05-12 09:52:51浏览次数:24  
标签:canvas 路径 image flash ctx 画布 html5 绘制

绘制矩形边框,和填充不同的是绘制使用的是strokeRect, 和strokeStyle实现的

 

绘制路径

绘制路径的作用是为了设置一个不规则的多边形状态

路径都是闭合的,使用路径进行绘制的时候需要既定的步骤:

  1. 需要设置路径的起点

  2. 使用绘制命令画出路径

  3. 封闭路径

  4. 填充或者绘制已经封闭路径的形状

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button id="btn" style="width: 50px;height: 50px;background-color: red;" >
        清屏
    </button>
    <canvas id="context" width="500" height="600">当前的浏览器版本不支持,请升级浏览器</canvas>
    <script >
        const dom  = document.querySelector("#context");
        // console.log(dom.getContext);
        if(!dom.getContext) {
            alert("当前浏览器不支持")
        }
        var btn = document.querySelector("#btn");
       
        const ctx = dom.getContext("2d");  // 获取2D上下文
        if(ctx != null) {
            // 创建一个路径
            ctx.beginPath()
            ctx.moveTo(100,100);  // 需要设置路径的起点
            ctx.lineTo(200,200);
            ctx.lineTo(400,200);
            ctx.lineTo(400,100);  // 使用绘制命令画出路径
            ctx.closePath();  // 封闭路径
             ctx.strokeStyle = 'red';
            ctx.stroke();   
            ctx.fillStyle = "blue";
            ctx.fill();  // 填充或者绘制已经封闭路径的形状
        }


        btn.onclick = () => {
            ctx.clearRect(0,0,600,600);
        } 
    </script>
</body>
</html>

总结我们要绘制一个图形,要按照顺序

  1. 开始路径ctx.beginPath()
  2. 移动绘制点ctx.moveTo(x, y)
  3. 描述绘制路径ctx.lineTo(x, y)
  4. 多次描述绘制路径ctx.lineTo(x, y)
  5. 闭合路径ctx.closePath()
  6. 描边ctx.stroke()
  7. 填充ctx.fill()

此时我们发现之前我们在学习绘制矩形的时候使用的是fillRectstrokeRect但是实际上fillstroke也是具有绘制填充功能的

stroke(): 通过线条来绘制图形轮廓。

fill(): 通过填充路径的内容区域生成实心的图形。

 

渲染图片

// 导入图片
if(ctx !== null) {
    // 第一步是创建一个image元素
    let image:HTMLImageElement = new Image()
    // 用src设置图片的地址
    image.src = "image/test1.png"
    // 必须要在onload函数内绘制图片,否则不会渲染
    image.onload = function() {
        ctx.drawImage(image, 100, 100)
    }
}

canvas是可以进行变形的,但是变形的不是元素,而是ctx,ctx就是整个画布的渲染区域,整个画布在变形,我们需要在画布变形前进行保存和恢复:

  • save():保存画布(canvas)的所有状态。
  • restore():save 和 restore 方法是用来保存和恢复 canvas 状态的,都没有参数。Canvas 的状态就是当前画面应用的所有样式和变形的一个快照。

Canvas状态存储在栈中,每当save()方法被调用后,当前的状态就被推送到栈中保存。

标签:canvas,路径,image,flash,ctx,画布,html5,绘制
From: https://www.cnblogs.com/zhulongxu/p/18187513

相关文章

  • 画布canvas基础 01
    1.什么是canvascanvas是用来绘制图形的.它可以用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。<canvaswidth="500"height="500">当前的浏览器版本不支持,请升级浏览器</canvas>判断浏览器是否支持画布cnavascanvas的标签属性只有两个,width和heig......
  • 双核、DSPIC33CH128MP203-I/M5 DSPIC33CH128MP203-H/M5 DSPIC33CH128MP203-E/M5数字信
    产品简介dsPIC33CH双核数字信号控制器在单个芯片中集成了两个dsPICDSC内核,一个设计用作主器件,而另一个则设计用作从器件。从内核用于执行专用、时间关键型控制代码,而主内核则用于运行用户界面、系统监测和通信功能以及最终应用的定制。dsPIC33CH器件优化用于高性能数字电源、电......
  • TheAlgorithms/C - 各种基础算法、数据结构的 C 语言实现+armink/SFUD - 一款基于 JED
    1、OpenMV-RT-基于恩智浦i.MXRT系列的开源机器视觉AI模块OpenMV-RT是一款基于恩智浦最近主打的i.MXRT超高性能系列MCU的视觉模块,模块设计者是恩智浦大牛工程师宋岩(对,就是ARMCortex-M3权威指南中文版作者)。模块源代码: https://github.com/RockySong/micropython......
  • EasyFlash - 一款轻巧的嵌入式 Flash 存储器库
    1、BabyOS-一套管理功能模块和外设驱动的MCU项目开发框架BabyOS是由网友notrynohigh开发维护的适用于MCU项目的一套管理功能模块和外设驱动的框架。项目主页: https://github.com/notrynohigh/BabyOS对项目而言,使用BabyOS能缩短开发周期。项目开发时选择适用的功......
  • WPF Canvas在Image 图像上绘图,自适应缩放.
    效果如图  实现了绘图,自适应缩放核心代码如下<Window.InputBindings><KeyBindingKey="Z"Modifiers="Ctrl"Command="{BindingUndoCommand}"/></Window.InputBindings><i:Interaction.Triggers>......
  • 采用flex布局,父组件width为百分比,解决子组件canvas画布width自适应问题
     创建EleResize.js文件(拷贝以下代码即可)varEleResize={ _handleResize:function(e){  varele=e.target||e.srcElement  vartrigger=ele.__resizeTrigger__  if(trigger){   varhandlers=trigger.__z_resizeListeners   if......
  • Keil 和Eclipse 软件编译环境下bin和ram以及flash大小及关系
    一.keil软件编译环境ProgramSize:Code=65228 RO-data=5302 RW-data=48 ZI-data=1681keil软件编译后会出现上面的提示,其意义如下:Code:指程序中代码的字节数RO-data:指程序中定义的常量字节数RW-data:程序中已初始化的变量字节数ZI-Data:程序中未初始化的变量字节数......
  • stm32 将外部 Flash挂载在 SPI 出现数据传输时好时不好的排查过程
    现象:将外部Flash挂载在SPI,在hardware_init()->read_jedec_id()里的result=spi->wr(spi,cmd_data,sizeof(cmd_data),recv_data,sizeof(recv_data))中,recv_data的值经常不一致,result的值偶尔为SFUD_SUCCESS,大部分会Error。备注:正常情况下,recv_data的值为......
  • Canvas简历编辑器-我的剪贴板里究竟有什么数据
    Canvas图形编辑器-我的剪贴板里究竟有什么数据在这里我们先来聊聊我们究竟应该如何操作剪贴板,也就是我们在浏览器的复制粘贴事件,并且在此基础上聊聊我们在Canvas图形编辑器中应该如何控制焦点以及如何实现复制粘贴行为。在线编辑:https://windrunnermax.github.io/CanvasEdito......
  • Android开发 Jetpack Compose Canvas
    版权声明本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/17657716.html本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。前言  此篇博客讲解Canvas的使用 画线正常的线条效果图......