亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue怎么使用js對圖片進行點擊標注圓點并記錄它的坐標

發布時間:2022-04-28 14:49:44 來源:億速云 閱讀:1259 作者:iii 欄目:開發技術

這篇文章主要介紹“vue怎么使用js對圖片進行點擊標注圓點并記錄它的坐標”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“vue怎么使用js對圖片進行點擊標注圓點并記錄它的坐標”文章能幫助大家解決問題。

功能

  • 點擊開始標注按鈕后才可以對圖片進行標注

  • 在圖片區域內單機左鍵才可進行加點

  • 在標注點上右擊刪除該點,在圖片上右擊無效果

  • 完成標注后點擊完成標注按鈕后,結束標注,此后點擊圖片不再加點

標注前

vue怎么使用js對圖片進行點擊標注圓點并記錄它的坐標

標注后

vue怎么使用js對圖片進行點擊標注圓點并記錄它的坐標

打印記錄坐標點

這個坐標看你自己需求,是相對圖片的百分比坐標,還是相對整個窗口的坐標,js都可以實現的

vue怎么使用js對圖片進行點擊標注圓點并記錄它的坐標

代碼實現

我先說一說關鍵功能實現的js代碼(里面涉及了date的數據,所以需要看下后面的全部代碼實現),后面就是全部代碼

判斷鼠標是否右擊

if(e.button !== 2)       //判斷鼠標是否右擊

阻止冒泡行為和默認右鍵菜單事件

document.getElementById('myBiaoZhu').oncontextmenu=((e)=>{
        if(e && e.preventDefault) {
          //阻止默認瀏覽器動作(W3C)
          e.preventDefault()
        } else {
          //IE中阻止函數器默認動作的方式
          window.event.returnValue = false
        }
        return false
      })      //阻止冒泡行為和默認右鍵菜單事件

給圖片加點擊事件

document.getElementById('myBiaoZhu').onmousedown=(e)=>{
        e = e || window.event
        if(e.button !== 2){       //判斷是否右擊
          if(this.canBiaoZhu){    //判斷是否可以進行標注
            var x = e.offsetX || e.layerX
            var y = e.offsetY || e.layerY
            console.log(x,y)
            var myImg = document.querySelector("#myBiaoZhu")
            var currWidth = myImg.clientWidth
            var currHeight = myImg.clientHeight
            var ProportionWidthInImg = x/currWidth
            var ProportionHeightInImg = y/currHeight
            // console.log("圖片比例高度:"+ProportionHeightInImg)
            // console.log("圖片比例寬度:"+ProportionWidthInImg)
            this.banMa.push({
              id:this.banMa.length+1,
              x,
              y
            })
            this.createMarker(x,y)
          }
        }
      }

畫點

  createMarker(x, y) {
    var div = document.createElement('div')
    div.className = 'marker'
    div.id = 'marker'+this.banMa.length
    y = y + document.getElementById('myBiaoZhu').offsetTop - this.pointSize/2
    x = x + document.getElementById('myBiaoZhu').offsetLeft - this.pointSize/2
    div.style.width = this.pointSize + 'px'
    div.style.height = this.pointSize + 'px'
    div.style.backgroundColor = this.pointColor
    div.style.left = x + 'px'
    div.style.top = y + 'px'
    div.oncontextmenu=((e)=>{  //阻止冒泡行為和默認右鍵菜單事件,同時刪除該點
      var id = e.target.id
      document.getElementById('myBiaoZhuDiv').removeChild(div)
      this.banMa = this.banMa.filter(item=>item.id!= id.slice(6,id.length))
      if(e && e.preventDefault) {
        //阻止默認瀏覽器動作(W3C)
        e.preventDefault()
      } else {
        //IE中阻止函數器默認動作的方式
        window.event.returnValue = false
      }
      return false
    })  
    document.getElementById('myBiaoZhuDiv').appendChild(div)
  },

html:

<template>
  <div class="myBiaoZhu" id="myBiaoZhuDiv">
    <img id="myBiaoZhu" src="./1.png" alt="" >
    <el-button type="text" @click="startBiaoZhu">開始標注</el-button>
    <el-button type="text" @click="endBiaoZhu">標注完成</el-button>
  </div>
</template>

css:

<style lang="less">
  #myBiaoZhuDiv{
    position:relative;
    img{
      border:solid 1px #000;
      display:inline-block;
      margin:100px 100px;
      z-index: 1;
    }
    .marker{
      position:absolute;
      border-radius: 50%;
      z-index: 999;
    }
  }
</style>

js:

<script>
  export default {
    name: '',
    components: {},
    data () {
      return {
        banMa:[],           //斑馬線的數組
        canBiaoZhu:false,  //是否可以進行標注
        pointColor:'red',   //點的顏色
        pointSize:10,       //點的大小
      }
    },
    methods: {
      //開始標注
      startBiaoZhu(){
        this.canBiaoZhu = true
      },
      //完成標注
      endBiaoZhu(){
        this.canBiaoZhu = false
      },
      //畫點
      createMarker(x, y) {
        var div = document.createElement('div')
        div.className = 'marker'
        div.id = 'marker'+this.banMa.length
        y = y + document.getElementById('myBiaoZhu').offsetTop - this.pointSize/2
        x = x + document.getElementById('myBiaoZhu').offsetLeft - this.pointSize/2
        div.style.width = this.pointSize + 'px'
        div.style.height = this.pointSize + 'px'
        div.style.backgroundColor = this.pointColor
        div.style.left = x + 'px'
        div.style.top = y + 'px'
        div.oncontextmenu=((e)=>{
          var id = e.target.id
          document.getElementById('myBiaoZhuDiv').removeChild(div)
          this.banMa = this.banMa.filter(item=>item.id!= id.slice(6,id.length))
          if(e && e.preventDefault) {
            //阻止默認瀏覽器動作(W3C)
            e.preventDefault()
          } else {
            //IE中阻止函數器默認動作的方式
            window.event.returnValue = false
          }
          return false
        })  //阻止冒泡行為和默認右鍵菜單事件,刪除該點
        document.getElementById('myBiaoZhuDiv').appendChild(div)
      },
    },
    watch: {},
    computed: {},
    created () {
    },
    mounted () {
      document.getElementById('myBiaoZhu').oncontextmenu=((e)=>{
        if(e && e.preventDefault) {
          //阻止默認瀏覽器動作(W3C)
          e.preventDefault()
        } else {
          //IE中阻止函數器默認動作的方式
          window.event.returnValue = false
        }
        return false
      })      //阻止冒泡行為和默認右鍵菜單事件
      document.getElementById('myBiaoZhu').onmousedown=(e)=>{
        e = e || window.event
        if(e.button !== 2){       //判斷是否右擊
          if(this.canBiaoZhu){    //判斷是否可以進行標注
            var x = e.offsetX || e.layerX
            var y = e.offsetY || e.layerY
            console.log(x,y)
            var myImg = document.querySelector("#myBiaoZhu")
            var currWidth = myImg.clientWidth
            var currHeight = myImg.clientHeight
            var ProportionWidthInImg = x/currWidth
            var ProportionHeightInImg = y/currHeight
            // console.log("圖片比例高度:"+ProportionHeightInImg)
            // console.log("圖片比例寬度:"+ProportionWidthInImg)
            this.banMa.push({
              id:this.banMa.length+1,
              x,
              y
            })
            this.createMarker(x,y)
          }
        }
      }
    },
    beforeDestroy () {
    },
    destroyed () {
    },
  }
</script>

關于“vue怎么使用js對圖片進行點擊標注圓點并記錄它的坐標”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

炎陵县| 焦作市| 肇庆市| 商丘市| 滦平县| 木里| 鹤山市| 专栏| 桂阳县| 宝鸡市| 南澳县| 纳雍县| 额济纳旗| 洱源县| 永和县| 武山县| 大石桥市| 临湘市| 潜江市| 石台县| 商城县| 大余县| 法库县| 苏尼特左旗| 河东区| 永川市| 兰西县| 怀柔区| 陆良县| 永嘉县| 周至县| 万安县| 彭水| 山东省| 伽师县| 永兴县| 芮城县| 巴彦县| 肥东县| 新兴县| 丹凤县|