zhyiwww
          用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
          posts - 536,comments - 394,trackbacks - 0
          <html xmlns:v="http://www.aygfsteel.com/zhyiwww/">
          ?? ?<head>
          ?? ??? ?<title></title>
          ?? ??? ?
          ??????? <meta name="Generator" content="EditPlus" />
          ?? ??? ?<meta name="Author" content="eglic" />
          ?? ??? ?<meta name="ContentType" content="text/html" />
          ?? ??? ?<meta name="CharSet" content="GB2312" />
          ?? ??? ?
          ??????? <link rel="stylesheet" type="text/css" href="/style/default.css" />
          ?? ??? ?
          ??????? <style type="text/css">
          ??????????? v\:*?? {behavior:url(#default#VML);} ?
          ??????? </style>
          ?? ??? ?
          ?? ??? ?
          ?????? ?
          ?? ?</head>
          ?? ?<body>
          ?????? ?
          ?? ??? ?<div id='lineDiv'?? ??? ?
          ?? ??? ??? ?onmousedown = 'down(event)'?? ?
          ?? ??? ??? ?onmouseup='up(event)'
          ?? ??? ??? ?onmousemove='move(event)'
          ?? ??? ??? ?style='top:30px;left:30px;width:800px;height:600px;visibility:visible;border:solid 1px blue;background-color: #FF99FF'
          ?? ??? ?>?? ?
          ??????? ?
          ????? ?
          ????? </div>
          ?????? ?
          ??????? <script type="text/javascript">
          ?????? ?
          ?? ??? ??? ? /**
          ?? ??? ??? ? * 定義點(diǎn)對象,也就是鼠標(biāo)的位置的封裝
          ?? ??? ??? ? */
          ?? ??? ??? ?function Point(){
          ?? ??? ??? ??? ?return this;
          ?? ??? ??? ?}
          ?? ??? ??? ?Point.prototype.setX = function(screenX){
          ?? ??? ??? ?};
          ?? ??? ??? ?Point.prototype.setY = function(screenY){
          ?? ??? ??? ?}
          ?? ??? ??? ?
          ?? ??? ??? ?
          ?? ??? ??? ?/**
          ?? ??? ??? ? * 定義的屏幕點(diǎn)對象
          ?? ??? ??? ? */
          ?? ??? ??? ?function ScreenPoint(screenX,screenY){
          ?? ??? ??? ??? ?this.screenX = screenX;
          ?? ??? ??? ??? ?this.screenY = screenY;
          ?? ??? ??? ??? ?return this;
          ?? ??? ??? ?}
          ?????? ??? ?ScreenPoint.prototype = new Point();
          ?? ??? ??? ?
          ?? ??? ??? ?ScreenPoint.prototype.setX = function (screenX){
          ?? ??? ??? ??? ?this.screenX = screenX;
          ?? ??? ??? ?};
          ?? ??? ??? ?ScreenPoint.prototype.setY = function (screenY){
          ?? ??? ??? ??? ?this.screenY = screenY;
          ?? ??? ??? ?};
          ?? ??? ??? ?
          ?? ??? ??? ?/**
          ?? ??? ??? ? * 重載toString方法
          ?? ??? ??? ? */
          ?? ??? ??? ?ScreenPoint.prototype.toString = function(){
          ?? ??? ??? ??? ?return this.screenX.toString() + " ---? " + this.screenY.toString();
          ?? ??? ??? ??? ?//return "-----------";
          ?? ??? ??? ?}; ?
          ?? ??? ??? ?
          ??????? </script>
          ?????? ?
          ?? ??? ?<script language="javascript">
          ?? ??? ??? ?
          ?? ??? ??? ?// 你所點(diǎn)過的鼠標(biāo)位置的數(shù)組,是點(diǎn)對象數(shù)組
          ?? ??? ??? ?var disPoints = new Array();
          ?? ??? ??? ?

          ?? ??? ??? ?// 是否處于鼠標(biāo)按下狀態(tài)
          ?? ??? ??? ?var? select = false;
          ?? ??? ??? ?
          ?? ??? ??? ?// 記錄鼠標(biāo)按下點(diǎn)的位置 ,默認(rèn)是(0,0) ?
          ?? ??? ??? ?var? downX = 0; ?
          ?? ??? ??? ?var? downY = 0;
          ?? ??? ??? ?
          ?? ??? ??? ?// 當(dāng)前用于畫線的層?? ??? ??? ?
          ?? ??? ??? ?var lineDiv = document.getElementById("lineDiv");
          ?? ??? ??? ?
          ?? ??? ??? ?// 當(dāng)前你鼠標(biāo)畫的線,在鼠標(biāo)抬起前的那一條
          ?? ??? ??? ?var line = null;
          ?? ??? ??? ?
          ?? ??? ??? ?/**
          ?? ??? ??? ?* 處理鼠標(biāo)按下事件
          ?? ??? ??? ?*/
          ??????????? function down(event){?????????? ??? ?
          ?????????? ??? ?
          ?????????? ??? ?//alert(event);
          ?????????? ??? ?
          ?? ??? ??? ??? ?// 取得你選取的最后一個點(diǎn)
          ?? ??? ??? ??? ?var lastPoint = disPoints[disPoints.length - 1];
          ?? ??? ??? ??? ?//alert(lastPoint);
          ?? ??? ??? ??? ?
          ?? ??? ??? ??? ?// 判斷是否是第一個點(diǎn)
          ?? ??? ??? ??? ?if(lastPoint == null){
          ?? ??? ??? ??? ??? ?// 鼠標(biāo)按下點(diǎn)屏幕坐標(biāo)
          ?? ??? ??? ??? ??? ?var mouseX1 = event.clientX -? getDivOffsetLeft();
          ?? ??? ??? ??? ??? ?var mouseY1 = event.clientY -? getDivOffsetTop();
          ?? ??? ??? ??? ??? ?
          ?? ??? ??? ??? ??? ?// 記錄鼠標(biāo)按下點(diǎn)的屏幕坐標(biāo)
          ?? ??? ??? ??? ??? ?downX = mouseX1;
          ?? ??? ??? ??? ??? ?downY = mouseY1;
          ?? ??? ??? ??? ??? ?
          ?? ??? ??? ??? ??? ?// 記錄第一個點(diǎn)
          ?? ??? ??? ??? ??? ?lastPoint = new ScreenPoint(downX,downY);
          ?? ??? ??? ??? ??? ?disPoints[0] = lastPoint;
          ?? ??? ??? ??? ??? ?//return;
          ?? ??? ??? ??? ?}
          ?? ??? ??? ??? ?
          ?? ??? ??? ??? ?// 如果不是第一個點(diǎn)
          ?? ??? ??? ??? ?// 取得當(dāng)前鼠標(biāo)點(diǎn)的位置
          ?? ??? ??? ??? ?var mouseX2 = event.clientX -? getDivOffsetLeft();
          ?? ??? ??? ??? ?var mouseY2 = event.clientY -? getDivOffsetTop();
          ?? ??? ??? ??? ?
          ?? ??? ??? ??? ?// 定義當(dāng)前點(diǎn)
          ?? ??? ??? ??? ?var tmpPoint = new ScreenPoint(mouseX2,mouseY2);
          ?? ??? ??? ??? ??? ??? ??? ??? ?
          ?? ??? ??? ??? ?// 定義線的ID,用于,取得線的對象
          ?? ??? ??? ??? ?var lineID = "the_line_" + (disPoints.length-1);
          ?? ??? ??? ??? ?
          ?? ??? ??? ??? ?// 在當(dāng)前點(diǎn),和最后一個點(diǎn),兩點(diǎn)畫線
          ?? ??? ??? ??? ?line = drawLine(lineID,lastPoint,tmpPoint);
          ?? ??? ??? ??? ??? ??? ??? ?
          ?? ??? ??? ??? ?// 鼠標(biāo)按下,記錄按下的狀態(tài)
          ?? ??? ??? ??? ?select = true;
          ?? ??? ??? ??? ??? ?
          ??????????? }
          ?????????? ?
          ??????????? /**
          ?? ??? ??? ?* 處理鼠標(biāo)抬起事件
          ?? ??? ??? ?*/
          ?? ??? ??? ? function up(event){?? ??? ?
          ?? ??? ??? ? ?? ??? ?//alert("up");?? ??? ??? ?
          ?? ??? ??? ??? ??? ?// 取得鼠標(biāo)抬起點(diǎn)的坐標(biāo),也就是確定點(diǎn)的坐標(biāo)
          ?? ??? ??? ??? ??? ?var mouseX3 = event.clientX -? getDivOffsetLeft();
          ?? ??? ??? ??? ??? ?var mouseY3 = event.clientY -? getDivOffsetTop();
          ?? ??? ??? ??? ??? ?
          ?? ??? ??? ??? ??? ?// 最終確定的點(diǎn)的對象
          ?? ??? ??? ??? ??? ?var currentPoint = new ScreenPoint(mouseX3,mouseY3);
          ?? ??? ??? ??? ??? ?
          ?? ??? ??? ??? ??? ?// 把此點(diǎn)放入到線的端點(diǎn)數(shù)組里面,這個點(diǎn),相對于下一次的操作來說,就是最后一個點(diǎn)
          ?? ??? ??? ??? ??? ?disPoints[disPoints.length] = currentPoint;
          ?? ??? ??? ??? ??? ?select = false;?? ??? ?
          ?? ???????????? }?? ?
          ??????????? /**
          ?? ??? ??? ?* 處理鼠標(biāo)移動事件
          ?? ??? ??? ?*/
          ?? ??? ??? ? function move(event){
          ?? ??? ??? ? ?? ??? ?// 是否鼠標(biāo)按下
          ?? ??? ??? ??? ??? ?if(select){?? ??? ?
          ?? ??? ??? ??? ??? ??? ?// 取得當(dāng)前鼠標(biāo)的位置坐標(biāo)
          ?? ??? ??? ??? ??? ??? ?var mouseX2 = event.clientX -? getDivOffsetLeft();
          ?? ??? ??? ??? ??? ??? ?var mouseY2 = event.clientY -? getDivOffsetTop();
          ?? ??? ??? ??? ??? ??? ?
          ?? ??? ??? ??? ??? ??? ?// 把線,從最后一個點(diǎn)畫到當(dāng)前位置
          ?? ??? ??? ??? ??? ??? ?line.to = mouseX2 + "," + mouseY2;?? ??? ??? ?
          ?? ??? ??? ??? ??? ?}
          ?? ??? ??? ??? ??? ?/*
          ?? ??? ??? ??? ??? ? * 取消事件冒泡,否則不能響應(yīng)鼠標(biāo)的抬起事件
          ?? ??? ??? ??? ??? ? */
          ?? ??? ??? ??? ??? ?window.event.cancelBubble = true;
          ?? ??? ??? ??? ??? ?window.event.returnValue = false;?? ?
          ?? ???????????? }?? ?
          ?????????? ?
          ?? ??? ??? ?
          ??????????? function getDivOffsetLeft(){
          ?? ??? ??? ??? ?var lay1 = document.getElementById("lineDiv");
          ?? ??? ??? ??? ?//var rect = document.getElementById("rect");
          ?? ??? ??? ??? ?return lay1.offsetLeft;
          ?? ??? ??? ?}
          ?? ??? ??? ?function getDivOffsetTop(){
          ?? ??? ??? ??? ?var lay1 = document.getElementById("lineDiv");
          ?? ??? ??? ??? ?//var rect = document.getElementById("rect");
          ?? ??? ??? ??? ?return lay1.offsetTop;
          ?? ??? ??? ?}
          ?? ??? ???? ?
          ?? ??? ???? ?
          ??? ?
          ?? ??? ???? /**?? ??? ??????? ?
          ?? ??? ???? * 畫線操作
          ?? ??? ???? * 用VML 實(shí)現(xiàn)
          ?? ??? ???? */
          ?? ??? ??? ?function drawLine(id,startPoint,endPoint){
          ?? ??? ??? ??? ?//alert("start -- ");
          ?? ??? ??? ???? var?? s="<v:line?? " +
          ?? ??? ??? ??? ??? ?+ ?? ?"id="
          ?? ??? ??? ??? ??? ?+ ?? ?id
          ?? ??? ??? ??? ??? ?+?? ?"?? from="
          ?? ??? ??? ??? ??? ?+?? ?"'"
          ?? ??? ??? ??? ??? ?+ ?? ?startPoint.screenX
          ?? ??? ??? ??? ??? ?+?? ?","
          ?? ??? ??? ??? ??? ?+ ?? ?startPoint.screenY
          ?? ??? ??? ??? ??? ?+?? ?"'"
          ?? ??? ??? ??? ??? ?+ ?? ?"?? to="
          ?? ??? ??? ??? ??? ?+ ?? ?"'"
          ?? ??? ??? ??? ??? ?+ ?? ?endPoint.screenX
          ?? ??? ??? ??? ??? ?+?? ?","
          ?? ??? ??? ??? ??? ?+ ?? ?endPoint.screenY
          ?? ??? ??? ??? ??? ?+?? ?"'"
          ?? ??? ??? ??? ??? ?+?? ?"? style='position:absolute;left:0px;top:0px;'></v:line>";
          ?? ??? ??? ?
          ?? ??? ??? ??? ?var? o = document.createElement(s);?

          ??? ?? ?? ?? ?? // 這個方法,使在特定的位置添加對象,具體使用,請參考其它的資料
          ?? ??? ??? ??? ?document.body.insertAdjacentElement('BeforeEnd',o); ?
          ?? ??? ??? ??? ?
          ?? ??? ??? ??? ?return o;
          ?? ??? ??? ?}
          ?? ??? ??? ?
          ?? ??? ??? ?
          ?? ??? ?</script>
          ?? ?</body>
          </html>



          |----------------------------------------------------------------------------------------|
                                     版權(quán)聲明  版權(quán)所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2007-04-05 19:32 zhyiwww 閱讀(8438) 評論(11)  編輯  收藏 所屬分類: gisvml

          FeedBack:
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)
          2007-04-06 13:05 | BeanSoft
          先支持一下  回復(fù)  更多評論
            
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)
          2007-07-09 15:20 | ~~
          Good~~~~  回復(fù)  更多評論
            
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)
          2007-11-09 16:40 | 馬大哈
          先頂一下 太好了 謝謝樓主  回復(fù)  更多評論
            
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)
          2007-11-21 15:51 | irene
          謝謝樓主,頂一個!
          不過要如何控制畫線結(jié)束呢?  回復(fù)  更多評論
            
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)
          2007-11-21 23:56 | vml
          是啊
          要是能夠控制畫線的結(jié)束就好了額
          不過還是謝謝哈!  回復(fù)  更多評論
            
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)
          2007-11-23 09:33 | zhyiwww
          這幾天沒有時間了,等些天,如果有時間,再修改一下,完善一下功能.  回復(fù)  更多評論
            
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)
          2007-11-24 21:21 | vml
          等待你的修改哦 我也一直在想這個問題,但是水平有限啊!弄不出來
          不想的能不能夠?qū)崿F(xiàn)在屏幕上添加一個按鈕 這樣點(diǎn)一下按鈕就可以畫一個點(diǎn) 或者畫一條線 能夠?qū)崿F(xiàn)這樣的就好了  回復(fù)  更多評論
            
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)
          2008-01-15 14:01 | gis_cn
          能不能加上這個功能呢, 線畫好后, 每個點(diǎn)都是可以拖動的, 這樣可以調(diào)整線  回復(fù)  更多評論
            
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)[未登錄]
          2008-03-08 10:51 |
          謝謝!  回復(fù)  更多評論
            
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)
          2008-04-27 15:24 | sk
          不錯,謝了  回復(fù)  更多評論
            
          # re: javascript鼠標(biāo)畫線的VML實(shí)現(xiàn)
          2009-03-20 17:42 | 是是非非
          <meta name="Author" content="eglic" />

          都不記得啥時候?qū)懙牧恕!!?nbsp; 回復(fù)  更多評論
            
          主站蜘蛛池模板: 上杭县| 蛟河市| 土默特左旗| 翁牛特旗| 滦平县| 临泽县| 大田县| 旬邑县| 九江县| 托里县| 漾濞| 香港 | 嘉荫县| 涡阳县| 威海市| 尉氏县| 绵阳市| 彭山县| 铜川市| 灌阳县| 宜宾县| 永修县| 霍城县| 三穗县| 凤阳县| 桐梓县| 河西区| 平乡县| 郸城县| 满城县| 河池市| 怀安县| 株洲市| 新巴尔虎右旗| 天津市| 长岭县| 广东省| 青川县| 万源市| 营山县| 锦屏县|