Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 15|回复: 5
打印 上一主题 下一主题

研究html和js网页画图的问题

[复制链接]

1198

主题

2060

帖子

7058

积分

超级版主

Rank: 8Rank: 8

积分
7058
跳转到指定楼层
楼主
发表于 2016-8-16 11:19:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
研究html和js网页画图的问题::
从哪里开始学习?
1,网上百度相关资料
2,看看韩顺平的视频中间,有没有相关的例子可以参考的。
回复

使用道具 举报

1198

主题

2060

帖子

7058

积分

超级版主

Rank: 8Rank: 8

积分
7058
沙发
 楼主| 发表于 2016-8-16 11:26:02 | 只看该作者
先研究网络的资料,实现动手和理论都OK!
回复 支持 反对

使用道具 举报

1198

主题

2060

帖子

7058

积分

超级版主

Rank: 8Rank: 8

积分
7058
板凳
 楼主| 发表于 2016-8-16 11:27:56 | 只看该作者
本帖最后由 zangcf 于 2016-8-16 11:42 编辑

http://www.cnblogs.com/carekee/articles/1723997.html
先研究这篇文章,把代码copy到Editplus++中间,然后保存为test.html,运行效果看看!
================
测试的结果好像这个程序只能显示鼠标的坐标,好像无法画线。
这个程序的主要问题,好像抓不到event!
回复 支持 反对

使用道具 举报

1198

主题

2060

帖子

7058

积分

超级版主

Rank: 8Rank: 8

积分
7058
地板
 楼主| 发表于 2016-8-16 11:47:19 | 只看该作者
本帖最后由 zangcf 于 2016-8-16 12:00 编辑

http://www.jb51.net/article/53990.htm
这个网站的例子是ok的
是可以工作的,认真研究这个例子,顺便熟悉js语言。
======================================
这个程序被我保存在
  1. D:\project\91xuepai\nodejs\test1.html
复制代码
今天一定要研究透这个程序
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">

  3. <head>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.         <title>test line</title>
  6. <style type="text/css">
  7. .style1 {
  8.   font-size: x-small;
  9. }
  10. </style>
  11. <script type="text/javascript">
  12. /**
  13.   画点
  14. */
  15. function makedot(x, y){
  16.         pointDiv = "<div style='height:1px;position:absolute;left:" + x +
  17.                 "px;top:" + y + "px;width:1px;background:#f00;overflow:hidden'></div>";
  18.         return pointDiv;
  19. }
  20. /**
  21. 根据两点坐标画直线。
  22. */

  23. function line(x1,y1,x2,y2){
  24.         var slope; //斜率
  25.         var direction;//坐标运动方向
  26.         var tx = x2 - x1;
  27.         var ty = y2 - y1;
  28.         if(tx == 0 && ty == 0)return;
  29.         var points = "";
  30.         var axis;//坐标轴上的坐标
  31.         if(Math.abs(tx) >= Math.abs(ty)){//在x轴上移动
  32.                 direction = tx > 0 ? 1 : -1;
  33.                 tx = Math.abs(tx);
  34.                 slope = ty / tx;
  35.                 axis = x1;
  36.                 for(i = 0; i < tx; i ++){
  37.                         points += makedot(axis, y1 + i * slope);
  38.                         axis += direction;
  39.                 }
  40.      
  41.         }else{//在y轴上移动
  42.                 direction = ty > 0 ? 1 : -1;
  43.                 ty = Math.abs(ty);
  44.                 slope = tx / ty;
  45.                 axis = y1;  
  46.                 for(i = 0; i < ty; i ++){
  47.                         points += makedot(x1 + i * slope, axis);
  48.                         axis += direction;
  49.                 }
  50.         }
  51.         var container = document.getElementById("container");
  52.         container.innerHTML += points;
  53. }
  54. var oldPoint = null;
  55. //获取鼠标位置
  56. function mousePosition(ev){
  57.         ev = ev || window.event;
  58.         if(ev.pageX || ev.pageY){
  59.                 return {x:ev.pageX, y:ev.pageY};
  60.         }
  61.         var doc = document.documentElement, body = document.body;
  62.         var pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
  63.         var pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);   
  64.         return {x:pageX, y:pageY};
  65. }

  66. function recordPoint(ev){  
  67.         var point = mousePosition(ev);
  68.         if(oldPoint != null){
  69.                 line(oldPoint.x, oldPoint.y, point.x, point.y);
  70.         }
  71.         oldPoint = point;
  72. }
  73. </script>
  74. </head>

  75. <body>
  76. <div id="container" style="width: 1000px; height: 600px; border:1px #bfbfbf solid;" onclick="recordPoint(event);">
  77.    
  78. </div>
  79. <script type="text/javascript">
  80.   //line(19,19,22,300);
  81. </script>
  82. </body>
  83. </html>
复制代码


回复 支持 反对

使用道具 举报

1198

主题

2060

帖子

7058

积分

超级版主

Rank: 8Rank: 8

积分
7058
5#
 楼主| 发表于 2016-8-16 11:59:49 | 只看该作者
还有一些参考文章,百度搜“javascript 屏幕画线的处理”可以找到
回复 支持 反对

使用道具 举报

1198

主题

2060

帖子

7058

积分

超级版主

Rank: 8Rank: 8

积分
7058
6#
 楼主| 发表于 2016-8-17 16:19:11 | 只看该作者
采用上面的方法,进行简单的画点操作没有问题,但是,如果像手写这种频繁操作DOM的,会导致浏览器响应不过来,会死机。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Comsenz Inc.

GMT+8, 2025-12-15 02:07 , Processed in 0.011883 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表