view plain copy
  1. Raphael.js 的教程非常简单,仅首页一段代码,然后就是 Reference。但作者在 Reference 部分也惜墨如金,不肯多费几句。所以有这一篇中文,对如何使用 Raphael.js 做个简单介绍。
  2. 调用 Raphael.js
  3. 首先在 HTML 页面调用 raphael.js:
  4. <script src="http://www.zfanw.com/blog/raphael.js"></script>
  5. 用法
  6. 用 Raphael 方法创建一块画布,
  7. var paper = Raphael(10, 50, 320, 200);//在浏览器窗口中,坐标 (10,50) 位置创建一个 canvas 对象,长320px,宽200px。
  8. 我们随后的操作都将在这块画布上进行。
  9. 绘制基本图形
  10. 比如,以 (100,100) 为中心画半径50px的圆,并填充红色:
  11. var circle=paper.circle(100,100,50);
  12. circle.attr({"fill":"red"}); //attr 方法用于设定对象属性
  13. 如你所见,这个半径50的圆跑到页面左上。这是因为画布的坐标原点在浏览器窗口左上角。
  14. 但 Raphael 方法还可以在 HTML 元素中创建画布,这就避开上面的问题:
  15. <div id="raphael1"></div>
  16. <script>
  17. var paper=Raphael("raphael1",320,200);//在 id 为 raphael1 元素中创建画布
  18. var circle=paper.cicle(100,100,50);
  19. circle.attr({"fill":"green"});
  20. </script>
  21. 代码效果如下:
  22. 除了圆(circle)外,Raphael.js 还提供其他常规图形方法,比如方形(rect)、椭圆(ellipse)、路径(path)等。
  23. 修改对象属性
  24. 在画布上创建 Raphael 对象后,我们可以修改对象属性。
  25. 比如,先使用 text 方法生成文字,然后修改字体大小为30px,填充蓝色,红色描边,透明度50%:
  26. 代码如下:
  27. <div id="raphael2"></div>
  28. <script>
  29. (function(){
  30. var paper=Raphael("raphael2",300,300);
  31. var t=paper.text(150,150,"Hello from 陈三");
  32. t.attr({"font-size":"30px","fill":"blue","stroke":"red","opacity":".5"});
  33. })();
  34. </script>
  35. 这一切都是通过 Raphael 对象的 attr 方法完成。
  36. 变换对象
  37. 除了修改对象属性,我们还可以变换(transform)对象,比如平移、旋转、缩放。
  38. 上图中的代码如下(虚线为图形变换前):
  39. <div id="raphael3"></div>
  40. <script>
  41. (function(){
  42. var paper=Raphael("raphael3",200,200);
  43. var rect=paper.rect(50,50,100,100,5);
  44. rect.attr({"stroke-dasharray":"-"});
  45. rect.transform("t100,100r45t-100,0s.5");
  46. })();
  47. </script>
  48. Raphael 对象变换有四个命令:
  49. t – translate
  50. r – rotate
  51. s – scale
  52. m – matrix
  53. 上例中 t100,100r45t-100,0s.5 命令翻译过来就是:
  54. 对象水平方向平移100
  55. 垂直方向平移100
  56. 旋转45度
  57. 水平方向往负方向平移100
  58. 缩小图形到原来的一半
  59. 动画效果
  60. 上面说到修改对象属性和变换对象,因为有开始和结束两个状态,我们就可以制作动画效果。
  61. 上图的代码如下:
  62. <div id="raphael4"></div>
  63. <script>
  64. (function(){
  65. var paper=Raphael("raphael4",400,300);
  66. var circle=paper.circle(200,150,100);
  67. circle.attr({"fill":"red"});
  68. circle.animate({cx: 10, cy: 20, r: 8, "fill": "blue"}, 10e3);
  69. })();
  70. </script>
  71. 圆心的初始坐标(200,130),半径100,填充红色,页面加载完成后,圆心坐标变成(cx,cy),即(10,20),半径缩为8,填充蓝色,这个变化过程时长为10e3毫秒,即10秒 – 如果你没有看到动画效果,那是因为动画已经结束,请刷新页面,然后跳转到这一部分。
  72. 绑定事件
  73. Raphael.js 还可以给对象绑定事件,比如单击、双击、拖动、鼠标移入、鼠标移出等。
  74. 举 hover 方法为例:
  75. 代码如下:
  76. <div id="raphael5"></div>
  77. <script>
  78. (function(){
  79. var paper=Raphael("raphael5",400,300);
  80. var circle=paper.circle(200,150,100);
  81. circle.attr({"fill":"red"});
  82. circle.hover(function(){circle.attr({"fill":"green"});},function(){circle.attr({"fill":"red"});});//给 circle 对象绑定 hover 事件
  83. })();
  84. </script>
  85. 上例中,鼠标放到圆上,填充色变成绿色,移开恢复成红色。
  86. 参考
  87. Reference
  88. 本文出自:http://www.zfanw.com/blog, 原文地址:http://www.zfanw.com/blog/raphael-js-tutorial.html, 感谢原作者分享。

Raphael.js简易教程相关推荐

  1. 强大的矢量图形库:Raphael JS 中文帮助文档及教程

    Raphael 是一个用于在网页中绘制矢量图形的 Javascript 库.它使用 SVG W3C 推荐标准和 VML 作为创建图形的基础,你可以通过 JavaScript 操作 DOM 来轻松创建出 ...

  2. eslint不报错 vue_【简易教程】基于Vue-cli使用eslint指南

    插件安装 首先在vscode插件中搜索eslint和prettier. 啥也不管,这俩必须得装. 插件简介 vscode插件库里的eslint是用来在你写代码的时候就直接给你报错.(vue-cli中的 ...

  3. 用g.raphael.js高速绘制饼图、柱状图、点状图、折线图(上)

    首先介绍一下什么是g.raphael.这个又要说到什么是raphael.js.raphael是一个javascript库,可以用来跨浏览器绘制各种图形,只要是你想得到的图形都可以用raphael绘制出 ...

  4. 文件上传利器SWFUpload入门简易教程

    凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...

  5. 【简易教程】基于Vue-cli使用eslint指南

    [简易教程]基于Vue-cli使用eslint指南 插件安装 首先在vscode插件中搜索eslint和prettier. 啥也不管,这俩必须得装. 插件简介 vscode插件库里的eslint是用来 ...

  6. Ext DeskTop的使用方法简易教程及相关例子Demo(转)

    Ext DeskTop的使用方法简易教程及相关例子Demo(转) ExtJS 2010-12-31 10:11:15 阅读196 评论0   字号:大中小 订阅 http://qwikioffice. ...

  7. Solidity 简易教程0x001

    Solidity是以太坊的主要编程语言,它是一种静态类型的 JavaScript-esque 语言,是面向合约的.为实现智能合约而创建的高级编程语言,设计的目的是能在以太坊虚拟机(EVM)上运行. 本 ...

  8. WebGL简易教程(十五):加载gltf模型

    文章目录 1. 概述 2. 实例 2.1. 数据 2.2. 程序 2.2.1. 文件读取 2.2.2. glTF格式解析 2.2.2.1. 场景节点 2.2.2.2. 网格 2.2.2.3. 缓冲,缓 ...

  9. WebGL简易教程(十一):纹理

    文章目录 1. 概述 2. 实例 2.1. 准备纹理 2.2. 配置纹理 2.3. 使用纹理 3. 结果 4. 参考 1. 概述 在之前的之前的教程<WebGL简易教程(九):综合实例:地形的绘 ...

最新文章

  1. switch case in protected scope 异常解决
  2. python在当前目录创建txt文件-python根据txt文本批量创建文件夹
  3. html网页访问WebAPI中的方法遇到的问题
  4. boost::io::ostream_put用法的测试程序
  5. python 随机获取数组元素_Python创建二维数组的正确姿势
  6. 微信公众号开发:消息处理
  7. Windows超级好用的离线截图贴图工具
  8. 类ResourceBundle详解
  9. ERP管理软件哪一家好?比较好的ERP管理系统软件推荐
  10. [Axure RP9] Axure RP Prototyping: Noob to Master 学习笔记
  11. 基于Javafx制作的随机抽签软件
  12. Java poi生成Excel加密文件
  13. 京东云申元庆:用创新技术改变中国,顺道改变世界
  14. WebRTC实时通信系列教程8 打通P2P连接和信令通信
  15. 【Beta阶段项目展示】Time Shaft·时间轴
  16. MyBatis从入门到精通 PDF 完整版
  17. 用Python每天自动给女朋友免费发短信
  18. Codeforces 356D Bacterial Melee dp
  19. ESP32网络音频播放器软硬件框图
  20. Java实现《简单自动关机助手》

热门文章

  1. vue仿今日头条_Vue实战篇(Vue仿今日头条)
  2. 第一篇(上):对称分量分解(Symmetrical Component Decomposition)序列变换 (Sequence Transformation)零序 正序 负序 分解
  3. After Effects 2021软件安装包
  4. JS-Web-API
  5. freemodbus移植
  6. C语言中*p 和p的区别
  7. 第2章 逻辑架构设计
  8. java图片镜像代码_Java OpenCV实现图像镜像翻转效果
  9. thinkPHP6解析二维码
  10. Halo博客网站添加天气插件