`

10分钟,利用canvas画一个小的loading界面

CSS 
阅读更多

首先利用定义下canvas得样式

  1. <canvaswidth="1024"height="720"id="canvas"style="border: 1px solid #808080;display: block;margin: 100px auto;>你的游览器不支持canvas</canvas>

 这里主要要说的就是宽高,不要在style里面定义,不然会被拉伸。(对于这点,建议大家看下W3c文档,不是很懂)

高度和宽度属性确定画布的宽度和高度坐标系统CSS属性只确定大小的盒子,它会显示

  1. var canvas = document.getElementById('canvas');
  2. var ctx = canvas.getContext('2d');

 获取对象,然后获取上下文进行画图。

好的,接下来来个小例子(画弧)

  1.  //设置线宽,颜色(我喜欢通俗的称他为空心画法)
  1. ctx.lineWidth =2;
  2. ctx.strokeStyle ='#176785';
  1. //arc是花弧形,如果用fill的画法的话,会把他封闭起来。
  2. ctx.beginPath();
  3. ctx.arc(512,360,100,0.5*Math.PI,1*Math.PI);
  4. ctx.stroke();
  5. ctx.closePath();

 

对于ctx.beginPath();和 ctx.closePath();我觉得是canvas灵魂,一些好的canvas的引擎之所以效率高,他们有很大程度的关系。

1.比如,有些人画的感觉画出来的canvas是带有锯齿状,就是在画布上,绘制了同样一件事情N次之后的效果。

看下面一个例子

  1. ctx.beginPath();
  2. ctx.arc(512,360,100,0.5*Math.PI,1*Math.PI);
  3. ctx.closePath();
  4. ctx.stroke();

这就是ctx.closePath();的作用,闭合那些线,但是fill的画法默认是带有ctx.closePath();这个功能的,而ctx.beginPath();的作用就是相当于函数中的分割了,分割作用域。

2.例子就举上面的,如果将上面两段代码何必,去掉ctx.beginPath();,那么那段弧形会被绘制两次,而第二个则绘制一次。言下之意就是,假如没有ctx.beginPath();的话,代码中要绘制100个图片,第一个就会绘制100次,第一个99次,总而言之是100+99+98+。。。。。

3.接下来两个小例子。

  1.  //定义一个渐变的颜色,其实坐标,x,y,w,h
  1. var color = ctx.createLinearGradient(512,460,512,260);
  2. // 开始颜色,和结束的颜色
  1. color.addColorStop(0,'#499989');
  2. color.addColorStop(1,'#176785');
  3.  
  4. ctx.beginPath();
  5. ctx.fillStyle = color;
  6. ctx.arc(512,360,99,0,2*Math.PI);
  7. ctx.fill();
  8. ctx.closePath();
  9.  
  10. //绘制文本
  11. var a =12;
  12. ctx.font="50px Arial";
  13. ctx.fillStyle ="#fff";
  1. //居中
  2. ctx.textAlign ="center";
  3. ctx.beginPath();
  1. //文字内容, 起始坐标,宽度
  2. ctx.fillText(a,510,375,64);
  3. ctx.closePath();

 

4.接下来我们把上面内容结合起来。

。。。。

。。。。

 看起来不太舒服,建议自己在电脑上测试:

在线调试唯一地址:http://www.gbtags.com/gb/debug/7400a9ba-51a7-409b-b1f4-b01363b9c625.htm

一个简单的loading写完了,但是里面有很多问题,比如那个fill和text都是有部分重复的绘制,绘制了99次的,其实我主要 想用fill那个圆来取代每次画好的文本还要clear。如果你把文字换种颜色可能明白我的意思了。然后这会导致底部绘制100次,导致底部出现锯齿的样 子。

而且,绘制圆放在前面,就是相当于clearRect的作用,去清除文字。

面对这个问题,不知道大家如何解决的。

阅读原文:10分钟,利用canvas画一个小的loading界面

分享到:
评论

相关推荐

    基于HTML5 Canvas和Rebound动画的Loading加载动画特效

    首先,Canvas是一个基于矢量图形的API,它通过JavaScript代码控制,可以实现动态的、高分辨率的图像渲染。在加载动画中,Canvas被用来覆盖整个页面,这使得加载界面成为用户关注的焦点。开发者通过Canvas的drawRect...

    unity启动界面有个转圈动画

    在Hierarchy面板中创建一个新的Canvas作为UI的基础。确保Canvas的Render Mode设置为Screen Space - Overlay,这样它可以覆盖在整个屏幕之上。 ##### 3. 添加UI元素 在Canvas下创建一个Image组件,用作显示进度条的...

    wpf 酷炫的loading界面 以及 显示gif动画库

    加载界面通常在程序启动或执行耗时操作时出现,向用户展示一个动态的图形,表示程序正在准备就绪或处理任务。在WPF中,我们可以利用其强大的可视化设计工具和数据绑定机制来创建自定义的加载界面,提供更好的用户...

    基于HTML5 Canvas实现的Loading形状加载动画特效源码.zip

    在这个源码中,我们可以期待看到如何利用Canvas API来设计各种动态的Loading动画,如环形进度条、旋转的图标、波纹扩散等。 以下是可能包含的关键知识点: 1. **Canvas基本概念**:理解HTML5 Canvas的基本结构,...

    加载loading进度条动画

    在本示例中,"AnimRoundProcessDialog"可能就是一个圆形进度条对话框的实现。 实现加载loading进度条动画,可以借助于各种编程语言和库。在Android开发中,我们可以使用ProgressBar控件,配合Animation类或者自定义...

    LoadingAnimation 动画 加载动画

    本资源“LoadingAnimation 动画 加载动画”提供了一个加载动画实例和一个固定帧动画,适用于开发者参考和使用。 1. **动画类型**: - **加载动画**:这种动画通常在应用执行耗时操作时显示,如网络请求、数据库...

    7款 HTML5 Loading动画特效

    这个加载动画是通过在Canvas上绘制一个旋转的线条或圆环来实现的。开发者可以控制线条的宽度、颜色以及旋转速度,使其与网站设计风格相匹配。Canvas API允许精确的像素操作,使得动画效果更加平滑。 2. **渐进式...

    android欢迎界面简单实现

    本文将详细讲解如何实现一个简单的Android欢迎界面,以增强应用程序的用户体验。 首先,我们需要理解Android欢迎界面的基本概念。它通常是一个在应用程序主界面加载前展示的短暂页面,可以包含品牌标识、动画效果...

    androidloading界面源码

    在这个项目中,开发者可能创建了一个继承自`View`或`ViewGroup`的类,通过重写`onDraw()`方法,利用`Canvas`进行绘制,实现自定义的动画效果。此外,可能还使用了`postInvalidate()`或`Handler`来实现动画的帧刷新。...

    ClipLoading外形可自定义的一个基于canvas的进度条

    "ClipLoading"是一个专为JavaScript开发设计的库,它提供了一个高度可定制的基于canvas的进度条,能够优雅地展示加载状态,同时允许开发者根据项目需求调整其外观和行为。 【描述】:“ClipLoading 外形可自定义的...

    启动界面实现LoadingView

    在给定的标题“启动界面实现LoadingView”中,我们聚焦于如何在启动界面中实现一个动态加载效果的视图,即LoadingView。这通常涉及到自定义视图、动画以及线程管理等多个技术点。下面将详细介绍这些关键知识点。 1....

    html2canvas.js截高清图案例.zip

    在描述中提到的“loading加载”,意味着在截图过程中可能需要显示一个加载指示器,因为转换HTML到Canvas可能会消耗一定时间,尤其是在处理复杂页面时。这通常通过JavaScript事件监听和控制来实现,比如在开始截图前...

    纯代码实现简单的水平滚动loading

    本文将深入探讨如何使用纯代码实现一个简单的水平滚动“加载中”(loading)动画,这个动画会循环滚动,提升用户体验,特别是在数据加载或者页面刷新时。 首先,我们要明确“loading”动画的基本概念。Loading动画...

    带有阻尼效果(橡皮筋效果)跳动的Loading动画

    "带有阻尼效果(橡皮筋效果)跳动的Loading动画"就是一个典型的例子,它模拟了真实世界中的物理现象,比如弹簧振荡,给用户带来一种动态而有趣的视觉效果。 阻尼效果,通常被称为“橡皮筋效果”,是一种模拟现实...

    Android自绘制Loading控件

    "Android自绘制Loading控件"是一个具体的实践示例,它演示了如何在Android应用中创建一个自定义的加载指示器(Loading)控件。这个过程涉及到对Android View系统、绘图基础以及动画原理的理解。 首先,我们要理解自...

    自定义loading

    "自定义loading"这个主题,意味着我们将探讨如何在Android应用中创建一个专属于自己的加载动画效果。加载动画,通常称为“loading”,是用户等待内容加载时显示的一种交互元素,它可以提升用户的等待体验,同时也能...

    各种极致的loading源码

    一个吸引人的、创新的页面加载界面(loading)能够极大地提升用户的满意度,使他们在等待内容加载时感到愉快而不是不耐烦。"各种极致的loading源码"这个资源集合提供了一系列精心设计的加载动画,非常适合开发者和...

    利用HTML5 Canvas制作一个简单的打飞机游戏

    使用了一个名为`allSprite.js`的文件来统一管理这些对象,每一个对象都由`Sprite`构造函数来创建。这种设计模式将游戏的每一帧的运动逻辑通过不同的`behavior`来实现。 5. 游戏开发流程: 游戏开发流程通常包括...

    AdhesiveLoadingView, 具有粘性的滑动小球,跌落反弹形成loading的效果.zip

    "AdhesiveLoadingView"是一个开源项目,它提供了一种独特的加载效果,即具有粘性的滑动小球,这些小球在跌落时会反弹,形成一种动态的“loading”效果。这种设计不仅美观,还能在等待数据加载时吸引用户的注意力,...

    Android-Android太极Loading

    "Android-Android太极Loading"是一个专注于Android平台的太极样式进度条/进度视图的项目。这个项目提供了一种独特而吸引人的加载效果,即"太极Loading",它通过模仿太极图的旋转动态,为用户展示数据加载的过程,既...

Global site tag (gtag.js) - Google Analytics