<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0
    <html xmlns:v="http://www.tkk7.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">
    ?????? ?
    ?? ??? ??? ? /**
    ?? ??? ??? ? * 定義點對象,也就是鼠標的位置的封裝
    ?? ??? ??? ? */
    ?? ??? ??? ?function Point(){
    ?? ??? ??? ??? ?return this;
    ?? ??? ??? ?}
    ?? ??? ??? ?Point.prototype.setX = function(screenX){
    ?? ??? ??? ?};
    ?? ??? ??? ?Point.prototype.setY = function(screenY){
    ?? ??? ??? ?}
    ?? ??? ??? ?
    ?? ??? ??? ?
    ?? ??? ??? ?/**
    ?? ??? ??? ? * 定義的屏幕點對象
    ?? ??? ??? ? */
    ?? ??? ??? ?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">
    ?? ??? ??? ?
    ?? ??? ??? ?// 你所點過的鼠標位置的數組,是點對象數組
    ?? ??? ??? ?var disPoints = new Array();
    ?? ??? ??? ?

    ?? ??? ??? ?// 是否處于鼠標按下狀態
    ?? ??? ??? ?var? select = false;
    ?? ??? ??? ?
    ?? ??? ??? ?// 記錄鼠標按下點的位置 ,默認是(0,0) ?
    ?? ??? ??? ?var? downX = 0; ?
    ?? ??? ??? ?var? downY = 0;
    ?? ??? ??? ?
    ?? ??? ??? ?// 當前用于畫線的層?? ??? ??? ?
    ?? ??? ??? ?var lineDiv = document.getElementById("lineDiv");
    ?? ??? ??? ?
    ?? ??? ??? ?// 當前你鼠標畫的線,在鼠標抬起前的那一條
    ?? ??? ??? ?var line = null;
    ?? ??? ??? ?
    ?? ??? ??? ?/**
    ?? ??? ??? ?* 處理鼠標按下事件
    ?? ??? ??? ?*/
    ??????????? function down(event){?????????? ??? ?
    ?????????? ??? ?
    ?????????? ??? ?//alert(event);
    ?????????? ??? ?
    ?? ??? ??? ??? ?// 取得你選取的最后一個點
    ?? ??? ??? ??? ?var lastPoint = disPoints[disPoints.length - 1];
    ?? ??? ??? ??? ?//alert(lastPoint);
    ?? ??? ??? ??? ?
    ?? ??? ??? ??? ?// 判斷是否是第一個點
    ?? ??? ??? ??? ?if(lastPoint == null){
    ?? ??? ??? ??? ??? ?// 鼠標按下點屏幕坐標
    ?? ??? ??? ??? ??? ?var mouseX1 = event.clientX -? getDivOffsetLeft();
    ?? ??? ??? ??? ??? ?var mouseY1 = event.clientY -? getDivOffsetTop();
    ?? ??? ??? ??? ??? ?
    ?? ??? ??? ??? ??? ?// 記錄鼠標按下點的屏幕坐標
    ?? ??? ??? ??? ??? ?downX = mouseX1;
    ?? ??? ??? ??? ??? ?downY = mouseY1;
    ?? ??? ??? ??? ??? ?
    ?? ??? ??? ??? ??? ?// 記錄第一個點
    ?? ??? ??? ??? ??? ?lastPoint = new ScreenPoint(downX,downY);
    ?? ??? ??? ??? ??? ?disPoints[0] = lastPoint;
    ?? ??? ??? ??? ??? ?//return;
    ?? ??? ??? ??? ?}
    ?? ??? ??? ??? ?
    ?? ??? ??? ??? ?// 如果不是第一個點
    ?? ??? ??? ??? ?// 取得當前鼠標點的位置
    ?? ??? ??? ??? ?var mouseX2 = event.clientX -? getDivOffsetLeft();
    ?? ??? ??? ??? ?var mouseY2 = event.clientY -? getDivOffsetTop();
    ?? ??? ??? ??? ?
    ?? ??? ??? ??? ?// 定義當前點
    ?? ??? ??? ??? ?var tmpPoint = new ScreenPoint(mouseX2,mouseY2);
    ?? ??? ??? ??? ??? ??? ??? ??? ?
    ?? ??? ??? ??? ?// 定義線的ID,用于,取得線的對象
    ?? ??? ??? ??? ?var lineID = "the_line_" + (disPoints.length-1);
    ?? ??? ??? ??? ?
    ?? ??? ??? ??? ?// 在當前點,和最后一個點,兩點畫線
    ?? ??? ??? ??? ?line = drawLine(lineID,lastPoint,tmpPoint);
    ?? ??? ??? ??? ??? ??? ??? ?
    ?? ??? ??? ??? ?// 鼠標按下,記錄按下的狀態
    ?? ??? ??? ??? ?select = true;
    ?? ??? ??? ??? ??? ?
    ??????????? }
    ?????????? ?
    ??????????? /**
    ?? ??? ??? ?* 處理鼠標抬起事件
    ?? ??? ??? ?*/
    ?? ??? ??? ? function up(event){?? ??? ?
    ?? ??? ??? ? ?? ??? ?//alert("up");?? ??? ??? ?
    ?? ??? ??? ??? ??? ?// 取得鼠標抬起點的坐標,也就是確定點的坐標
    ?? ??? ??? ??? ??? ?var mouseX3 = event.clientX -? getDivOffsetLeft();
    ?? ??? ??? ??? ??? ?var mouseY3 = event.clientY -? getDivOffsetTop();
    ?? ??? ??? ??? ??? ?
    ?? ??? ??? ??? ??? ?// 最終確定的點的對象
    ?? ??? ??? ??? ??? ?var currentPoint = new ScreenPoint(mouseX3,mouseY3);
    ?? ??? ??? ??? ??? ?
    ?? ??? ??? ??? ??? ?// 把此點放入到線的端點數組里面,這個點,相對于下一次的操作來說,就是最后一個點
    ?? ??? ??? ??? ??? ?disPoints[disPoints.length] = currentPoint;
    ?? ??? ??? ??? ??? ?select = false;?? ??? ?
    ?? ???????????? }?? ?
    ??????????? /**
    ?? ??? ??? ?* 處理鼠標移動事件
    ?? ??? ??? ?*/
    ?? ??? ??? ? function move(event){
    ?? ??? ??? ? ?? ??? ?// 是否鼠標按下
    ?? ??? ??? ??? ??? ?if(select){?? ??? ?
    ?? ??? ??? ??? ??? ??? ?// 取得當前鼠標的位置坐標
    ?? ??? ??? ??? ??? ??? ?var mouseX2 = event.clientX -? getDivOffsetLeft();
    ?? ??? ??? ??? ??? ??? ?var mouseY2 = event.clientY -? getDivOffsetTop();
    ?? ??? ??? ??? ??? ??? ?
    ?? ??? ??? ??? ??? ??? ?// 把線,從最后一個點畫到當前位置
    ?? ??? ??? ??? ??? ??? ?line.to = mouseX2 + "," + mouseY2;?? ??? ??? ?
    ?? ??? ??? ??? ??? ?}
    ?? ??? ??? ??? ??? ?/*
    ?? ??? ??? ??? ??? ? * 取消事件冒泡,否則不能響應鼠標的抬起事件
    ?? ??? ??? ??? ??? ? */
    ?? ??? ??? ??? ??? ?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 實現
    ?? ??? ???? */
    ?? ??? ??? ?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>



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

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

    都不記得啥時候寫的了。。。  回復  更多評論
      
    主站蜘蛛池模板: 亚洲中久无码不卡永久在线观看| 四虎影视永久免费观看地址| 亚洲欧洲一区二区| 国内精品免费久久影院| 亚洲愉拍99热成人精品热久久| 精品乱子伦一区二区三区高清免费播放 | 亚洲欧美黑人猛交群| 午夜免费不卡毛片完整版| 亚洲色www永久网站| 国产真人无遮挡作爱免费视频| 国产精品国产亚洲区艳妇糸列短篇 | 国产精品亚洲专区无码不卡| 又粗又硬又大又爽免费视频播放| 成人福利在线观看免费视频| 国产亚洲精品资在线| 亚洲视频在线观看免费| 亚洲av无码久久忘忧草| 国产高清在线免费视频| 免费视频精品一区二区| 亚洲国产a∨无码中文777| 亚洲成人免费网址| 亚洲av色香蕉一区二区三区蜜桃| 亚洲AV无码乱码精品国产| 中文字幕乱码一区二区免费| 亚洲精品成人网站在线播放| 全免费一级毛片在线播放| 日韩电影免费在线观看网址 | 久久青青草原亚洲av无码app| 91免费国产在线观看| 精品在线免费视频| 久久亚洲免费视频| 成在人线AV无码免费| 久久免费观看视频| 亚洲AV无码一区二区三区牛牛| 亚洲成a人片在线观看老师| 久久这里只精品99re免费| 亚洲色无码专区一区| 亚洲精品夜夜夜妓女网| 成年丰满熟妇午夜免费视频| 中文字幕在线观看免费| 精品亚洲成在人线AV无码|