Html5 canvas 绘制彩票走势图
因须要 要实现一个类似彩票走势图的功能,初次学Html5 ,非常多地方不明白,前段时间也发帖请教过这个问题。也是没给个明白说话,在网上搜了非常多,也没有实现的样例,今天细致研究了下。发现事实上也不是非常难,现将代码贴出来。共同学习!
先来一张效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXBjMDA3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
实现的代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="js/jquery-1.10.2.js"></script>
<style>
table { border: 0; margin: 0; border-collapse: collapse; border-spacing: 0; font-size: 11px; font-family: Arial; margin: 0 auto; }
table td, table th { padding: 0; border: 1px solid #d8d8d8; height: 23px; width: 23px; text-align: center; color: #666; }
table th { font-weight: bold; color: #000; }
</style>
<script type="text/javascript">
$(function () {
CreateTable();
var ids = "";
for (var i = 1; i < 31; i++) {
ids+= "T" + i + "_" + Math.floor(1 + Math.random() * (31 - 1)) + ",";
}
ids = ids.substring(0, ids.length - 1);
CreateLine(ids, 20, "#ff6600", "canvasdiv", "#d5d5d5");
});
function CreateTable() {
var tbody = "";
var head = "<tr>";
for (var i = 1; i < 31; i++) {
head += "<th>H" + i + "</th>";
tbody += "<tr>";
for (var j = 1; j < 31; j++) {
tbody += "<td id='T" + i + "_" + j + "'>" + j + "</td>";
}
tbody += "</tr>";
}
head += "</tr>";
$("#zstable thead").html(head);
$("#zstable tbody").html(tbody);
} function CreateLine(ids, w, c, div, bg) {
var list = ids.split(",");
for (var j = list.length - 1; j > 0; j--) {
var tid = $("#" + list[j]);
var fid = $("#" + list[j - 1]);
var f_width = fid.outerWidth();
var f_height = fid.outerHeight();
var f_offset = fid.offset();
var f_top = f_offset.top;
var f_left = f_offset.left;
var t_offset = tid.offset();
var t_top = t_offset.top;
var t_left = t_offset.left;
var cvs_left = Math.min(f_left, t_left);
var cvs_top = Math.min(f_top, t_top);
tid.css("background", bg).css("color", "red");
fid.css("background", bg).css("color", "red");
var cvs = document.createElement("canvas");
cvs.width = Math.abs(f_left - t_left) < w ? w : Math.abs(f_left - t_left);
cvs.height = Math.abs(f_top - t_top);
cvs.style.top = cvs_top + parseInt(f_height / 2) + "px";
cvs.style.left = cvs_left + parseInt(f_width / 2) + "px";
cvs.style.position = "absolute";
var cxt = cvs.getContext("2d");
cxt.save();
cxt.strokeStyle = c;
cxt.lineWidth = 1;
cxt.lineJoin = "round";
cxt.beginPath();
cxt.moveTo(f_left - cvs_left, f_top - cvs_top);
cxt.lineTo(t_left - cvs_left, t_top - cvs_top);
cxt.closePath();
cxt.stroke();
cxt.restore();
$("#" + div).append(cvs);
}
} </script>
</head>
<body>
<form id="form1" runat="server">
<table id="zstable">
<thead></thead>
<tbody></tbody>
</table>
<div id="canvasdiv">
</div>
</form>
</body>
</html>
Html5 canvas 绘制彩票走势图的更多相关文章
- html5 canvas绘制环形进度条,环形渐变色仪表图
html5 canvas绘制环形进度条,环形渐变色仪表图 在绘制圆环前,我们需要知道canvas arc() 方 ...
- 怎样用JavaScript和HTML5 Canvas绘制图表
原文:https://code.tutsplus.com/zh-...原作:John Negoita翻译:Stypstive 在这篇教程中,我将展示用JavaScript和canvas作为手段,在饼状 ...
- 【转】使用Python matplotlib绘制股票走势图
转载出处 一.前言 matplotlib[1]是著名的python绘图库,它提供了一整套绘图API,十分适合交互式绘图.本人在工作过程中涉及到股票数据的处理如绘制K线等,因此将matplotlib的使 ...
- 学习笔记:HTML5 Canvas绘制简单图形
HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...
- 使用 HTML5 Canvas 绘制出惊艳的水滴效果
HTML5 在不久前正式成为推荐标准,标志着全新的 Web 时代已经来临.在众多 HTML5 特性中,Canvas 元素用于在网页上绘制图形,该元素标签强大之处在于可以直接在 HTML 上进行图形操作 ...
- 使用html5 canvas绘制图片
注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...
- 使用html5 canvas绘制圆形或弧线
注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...
- html5 Canvas绘制图形入门详解
html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏览器(FireFox.Chrome. ...
- 解决html5 canvas 绘制字体、图片与图形模糊问题
html5 canvas 绘制字体.图片与图形模糊问题 发生情况 多出现在高dpi设备,这意味着每平方英寸有更多的像素,如手机,平板电脑.当然很多高端台式电脑也有高分辨率高dpi的显示器. canva ...
随机推荐
- HTTP 响应实体主体:XML 及 XML parser
本文内容 HTTP 响应实体主体:XML XML parser 总结 各编程语言实现的 XML parser HTTP 响应实体主体:XML 实体主体(entity-body)通常是HTTP响应里 ...
- python 微信企业号
python 微信企业号 准备,如果没有微信企业号,可以先申请体验号记下CorpID和Secret(获取Token用) 发送消息首先可以在微信的开发者中心,查看接口文档 下面就是python代码:1. ...
- Format Conditions按条件显示表格记录
标记特定记录 DevExpress强大得确实让人觉得它别具一格!现在,我有这样一个需求,把一个表中某字段为False的记录标记出来.下面是效果(某字段的可见性为否): 实现方式 如果是以前,我写个代码 ...
- tomcat7部署多个web应用不同编码,端口
1个tomcat部署多个web应用可以设置不同编码,端口,server.xml配置如下: <?xml version='1.0' encoding='utf-8'?><Server ...
- C/C++中的值传递,引用传递,指针传递,指针引用传递
在面试过程中,被面试官问到传值和传引用的区别,之前没有关注过这个问题,今天在网上找了一篇包含代码和图片的讲解文章,浅显易懂,遂转载备忘. 1. 值传递 void f( int p){ printf(& ...
- MySql SqlServer Sqlite中关于索引的创建
最近要更新Cocon90.Db库,令其ORM创建表时实现索引的添加.因此总结下列常用Sql,供大家学习与参考. 一.SqlServer中创建索引可以这样: ) Create Table Test ( ...
- 获取自增ID
方法一(一般不使用,多线程可能不准确) SELECT MAX(id) FROM table 方法二(一般使用这个) SELECT LAST_INSERT_ID()
- hadoop old API CombineFileInputFormat
来自:http://f.dataguru.cn/thread-271645-1-1.html 简介 本文主要介绍下面4个方面 1.为什么要使用CombineFileInputFormat 2.Comb ...
- sell 项目 商品表 设计 及 创建
1.数据库表之间的关系说明 2.数据库设计 3.创建 商品表 /** * 商品表 */ create table `product_info` ( `product_id` varchar(32) n ...
- 使用 loop device 制作安装镜像
看了下,手上的镜像中,文件系统才 100 多兆,但是整个镜像居然要 4G, 这意味着,我每次安装这个镜像到 SD 卡都要花很多没必要的时间. 所以,我提取了一些关键内容,然后,准备重新打包镜像. 1. ...