A JavaScript Fancier
伟大的javascript技术研究中...
IT博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
304 随笔 :: 0 文章 :: 479 评论 :: 0 Trackbacks
<
2007年1月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
公告
本blog为作者本人学习JS脚本所用,未经特别声明,本站所有文章均属作者本人原创,请转载时注明来源!谢谢合作!同时希望与各位javascript爱好者交流学习。MSN:yanwei8410@hotmail.com
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(26)
给我留言
查看公开留言
查看私人留言
随笔分类
__非技术文章__(24)
(rss)
DHTML相关技术(2)
(rss)
HTML/XHTML/CSS(37)
(rss)
javascript个人作品(37)
(rss)
javascript代码收藏(22)
(rss)
javascript代码研究(18)
(rss)
javascript技巧总结(72)
(rss)
javascript语法基础(20)
(rss)
Js框架组件(33)
(rss)
Web2.0相关内容(11)
(rss)
Web开发相关知识(28)
(rss)
其它技术文章(3)
(rss)
动态网页编程技术(4)
(rss)
正则表达式专题(10)
(rss)
随笔档案
2008年7月 (7)
2008年6月 (14)
2008年5月 (15)
2008年4月 (4)
2008年3月 (5)
2008年1月 (7)
2007年12月 (10)
2007年11月 (22)
2007年10月 (27)
2007年9月 (16)
2007年8月 (1)
2007年7月 (8)
2007年6月 (5)
2007年5月 (12)
2007年4月 (16)
2007年3月 (3)
2007年2月 (5)
2007年1月 (22)
2006年12月 (11)
2006年11月 (4)
2006年10月 (2)
2006年9月 (6)
2006年8月 (4)
2006年7月 (17)
2006年6月 (61)
Ajax技术站点
AJAX Matters
Ajaxian(国外)
AjaxPatterns Wiki
AJAX中国
Ajax中国-李琨老师的blog
笑笑设计(Ajax高人Blog)
javascript学习站点
javascript论坛
JSVM官方站点
无忧脚本
正则表达式库
JS高人Blog
LlinZzi's Blog
宝玉的blog
西林@生存
Ruby&&Ajax框架
Ajax效果框架
Bindows官方站
JSLinb(Ajax框架)
RubyonRail
rubyonrails
Ruby官方站
类C++的js框架
Web技术站点
CoolCode.CN
HTML5时代
专注于html5/css3及mobile开发的博客
IECN社区
Ugia.Cn
WEB2.0技术博客
(rss)
Web服务_TechTarget
蓝色理想
搜索
积分与排名
积分 - 879257
排名 - 2
最新评论
1. re: 利用arguments.callee实现匿名函数的递归
http://uedbet-getafe.weebly.com
--匿名函数
2. re: 解决Ext2.0中ComboBox执行Filter第一次无效的问题
评论内容较长,点击标题查看
--学习着
3. re: 有关window.undefined=window.undefined写法的理解(Ext2学习总结)
1
--1
4. re: EXT Ajax访问url返回405错误的解决办法
果然是requestMethod:'GET' 的问题。哈哈
--倔强的土豆
5. re: CSS中table-layout属性的作用及使用详解
vnbg
--左支座
阅读排行榜
1. document.getElementById()方法简写【js技巧】(58678)
2. 推荐一个IE下的优秀js调试工具(Companion.JS)(42450)
3. 关于JavaScript中apply与call的用法意义及区别(41831)
4. 转换字符串为json对象的方法 (19260)
5. JS中的instanceof和typeof (19110)
评论排行榜
1. XHTML1.0学习总结(30)
2. 关于JavaScript中apply与call的用法意义及区别(28)
3. [推荐]收藏的国内外网站设计资源【摘自http://adobeplus.blog.sohu.com】(26)
4. 一个正则实现文本框中只能输入数字和小数点(20)
5. Mastering JavaScript — concept and resource guide(20)
无聊用js写了一个画图函数--兼容FireFox
早晨醒来突然想写一个画图函数,以前在网上看到有人做过,但都是用VML做的,只有ie支持。
偶这个是用<div>形成的绝对定位的点画出来的,兼容各种浏览器。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled 1</title> <style type="text/css"> .style1 { font-size: x-small; } </style> </head> <body> <span class="style1"> <script type="text/javascript"> function makedot(x,y){ //画点函数 document.write("<div style='height:1px;position:absolute;left:"+x+"px;top:"+y+"px;width:1px;background:#f00;overflow:hidden'></div>") } /** 函数功能:根据给定的圆心和半径画圆 函数思路:根据半径及圆心坐标利用数学方法计算从0°到360°的每点的坐标,并画出来。 */ function circle(x,y,r){ //(x,y)圆心,r半径 var dotx,doty,radio; var Pi=Math.PI; makedot(x,y); for(var i=0;i<360;i+=0.5){ radio=i*Pi/180; dotx=r*Math.cos(radio)+x; doty=r*Math.sin(radio)+y makedot(dotx,doty); } } /** 函数功能:根据指点矩形左上角坐标及长宽绘制矩形。 函数思路:根据左上坐标及长宽,计算横纵向边每点的坐标 */ function rect(x,y,w,h){ //(x,y)左上角坐标,w,h 宽与高 for(var i=0;i<w;i++){ makedot(x+i,y); makedot(x+i,y+h); } for(var i=0;i<h;i++){ makedot(x,y+i); makedot(x+w,y+i); } } /** 函数功能:根据两点坐标画直线。 函数思路:根据两点的坐标计算机斜率,然后根据第一个点坐标及斜率计算直线上所有点然后画线。垂直线特殊处理 */ function line(x1,y1,x2,y2){ var slope=(y2-y1)/(x2-x1); //斜率 var diff=x2-x1; if(x1<x2){ for(var i=0;i<diff;i++){ makedot(x1+i,y1+slope*i); } }else if(x1>x2){ for(var i=0;i>diff;i--){ makedot(x1+i,y1+slope*i); } }else{ //画垂直线 var temp=y2-y1; if(temp>0){ for(var i=0;i<temp;i++){ makedot(x1,y1+i); } }else{ for(var i=0;i>temp;i--){ makedot(x1,y1+i); } } } } /** 函数功能:根据给定的三点坐标画三角形 函数思路:直接利用画线函数画三条线即可 */ function triangle(x1,y1,x2,y2,x3,y3){ line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x1,y1,x3,y3); } /** 函数功能:根据给定的一系列坐标点画多边形 函数思路:循环读取坐标点,在当前坐标点与下一坐标点之间连线 */ function polygon(){ var args=arguments.length; if(args%2!=0) return -1; var realargs=args/2; //坐标个数 for(var i=0;i<realargs-1;i++){ line(arguments[i*2],arguments[i*2+1],arguments[i*2+2],arguments[i*2+3]); } line(arguments[i*2],arguments[i*2+1],arguments[0],arguments[1]); } circle(500,500,200); rect(100,100,200,100); triangle(200,200,100,400,300,400); polygon(300,300,400,100,600,100,700,300,600,500,400,500); </script> </span> </body> </html>
posted on 2006-12-03 14:22
Yemoo'S JS Blog
阅读(4059)
评论(5)
编辑
收藏
引用
所属分类:
javascript个人作品
评论
#
re: 无聊用js写了一个画图函数--兼容FireFox
2006-12-04 13:37
踏雪赤兔
《程序员语录》:给我一个画点函数吧,我就能画出整个世界~
回复
更多评论
#
re: 无聊用js写了一个画图函数--兼容FireFox
2007-04-05 15:46
crf
看了你代码深受启发,特此感谢,另我将代码改成用<HR>来划线,效果也可以,且通过扑获鼠标位置实现画图,感觉挺好的,代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled 1</title>
<style type="text/css">
.style1 {
font-size: x-small;
}
</style>
</head>
<script type="text/javascript">
var w=1;
var h=1;
var col=black;
function add1()
{
w+=1;
h+=1;
}
function cut1()
{
if(w>1&&h>1)
{
w-=1;
h-=1;
}
}
function catchMouse()
{
//alert('hello');
var x=event.clientX-50;
var y=event.clientY-52;
makedot(x,y);
window.setTimeOut('catchMouse()',3);
}
function makedot(x,y){ //㺯
var sp=document.getElementById("sspp");
sp.insertAdjacentHTML("BeforeEnd","<hr style='position:absolute;left:"+x+"px;top:"+y+"px;width:"+w+"px;height:"+h+"px;color:"+col+";'>");
//document.write("<div style='height:1px;position:absolute;left:"+x+"px;top:"+y+"px;width:2px;background:#f00;overflow:hidden'></div>")
}
function changeColor(a)
{
col=a.value;
}
</script>
<body>
<span id="sspp" onMouseDown="document.onmousemove=catchMouse" onMouseUp="document.onmousemove=null" style="position:absolute;top:50px;left:50px;width:500px;height:500px;background-color:#eeeeee ">
</span>
<form action="">
<input type="button" onClick="add1()" name="add" value="+">
<input type="button" onClick="cut1()" name="cut" value="-">
<select id="col" onChange="changeColor(this)">
<option value="black">black</option>
<option value="blue">blue</option>
<option value="green">green</option>
<option value="orange">orange</option>
<option value="red">red</option>
<option value="pink">pink</option>
</select>
</form>
</body>
</html>
回复
更多评论
#
re: 无聊用js写了一个画图函数--兼容FireFox
2007-07-11 13:34
浪迹天涯
博主和这位朋友的脚本我都学习了,写的相当不错啊!只是这位朋友为什么要加一个setTimeout呢?我试了不加的效果,也是不错的呀!
另外我有个问题:在FireFox中,为什么event.button,(event = event ? event : (window.event ? window.event : null);这样的方式拿到的)的值一直是0呢?
回复
更多评论
#
re: 无聊用js写了一个画图函数--兼容FireFox
2008-04-02 08:27
denni_hxc
setTimeout(函数名,毫秒)
回复
更多评论
#
re: 无聊用js写了一个画图函数--兼容FireFox
2009-10-19 19:26
信软计算机有限公司
上的方法我们实现过,确实很有趣。不过我们也遇到了一个问题,就是页面占用很多内存。 画第一笔的时候,很流畅,以后的几笔就有点迟钝了。不知道您是否也遇到过类似的问题。
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
Powered by:
IT博客
Copyright © Yemoo'S JS Blog