第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

具有折線圖的虛擬測(cè)量設(shè)備

具有折線圖的虛擬測(cè)量設(shè)備

開滿天機(jī) 2022-10-27 16:31:14
我正在使用 LightningChart JS 并想實(shí)現(xiàn)一個(gè)虛擬測(cè)量設(shè)備,我可以在其中單擊 A 點(diǎn),然后拖動(dòng)到 B 點(diǎn)并獲取 A 點(diǎn)和 B 點(diǎn)的 x、y 值。據(jù)我研究事件處理程序,它們只返回一個(gè)鼠標(biāo)事件,其中包含屏幕位置的開始和停止位置。如果我錯(cuò)了,請(qǐng)糾正我。還請(qǐng)?zhí)岢鲆环N有效的方法來做到這一點(diǎn)。提前致謝。
查看完整描述

1 回答

?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

鼠標(biāo)事件在與普通 JS 鼠標(biāo)事件相同的坐標(biāo)空間中返回鼠標(biāo)坐標(biāo)。要在系列坐標(biāo)空間中獲取點(diǎn)擊位置,需要采取幾個(gè)步驟。

首先需要將鼠標(biāo)坐標(biāo)轉(zhuǎn)換為引擎坐標(biāo)空間。引擎坐標(biāo)空間是畫布左下角為0,0的畫布區(qū)域。這可以通過chart.engine.clientLocation2Engine(ev.clientX,ev.clientY). 這將使用圖表引擎比例返回引擎坐標(biāo)空間中的事件坐標(biāo)。

然后需要將其轉(zhuǎn)換為系列坐標(biāo)。這可以通過translatePoint方法來完成。translatePoint可用于在兩個(gè)不同比例之間轉(zhuǎn)換點(diǎn)。LightningChart JS 中的比例基本上是一個(gè)坐標(biāo)空間。

const m = chart.engine.clientLocation2Engine(ev.clientX, ev.clientY)
const translated = translatePoint(m, chart.engine.scale, lineSeries.scale)

現(xiàn)在translated變量包含系列坐標(biāo)空間中的點(diǎn)擊位置。

請(qǐng)參閱下面的完整代碼片段,您可以在其中拖動(dòng)系列區(qū)域,并在停止拖動(dòng)時(shí)將標(biāo)記放置到拖動(dòng)的開始和結(jié)束位置。

const {

    lightningChart,

    SolidLine,

    SolidFill,

    ColorRGBA,

    AxisTickStrategies,

    UIOrigins,

    DataPatterns,

    translatePoint,

    ColorHEX

} = lcjs


const chart = lightningChart().ChartXY()


const diesel = [

    { x: 0, y: 1.52 },

    { x: 1, y: 1.52 },

    { x: 2, y: 1.52 },

    { x: 3, y: 1.58 },

    { x: 4, y: 2.00 },

    { x: 5, y: 2.00 },

    { x: 6, y: 2.00 },

    { x: 7, y: 2.00 },

    { x: 8, y: 2.26 },

    { x: 9, y: 1.90 },

    { x: 10, y: 1.90 },

    { x: 11, y: 1.90 },

    { x: 12, y: 1.90 },

    { x: 13, y: 1.60 },

    { x: 14, y: 1.60 },

    { x: 15, y: 1.60 },

    { x: 16, y: 1.00 },

    { x: 17, y: 1.00 },

    { x: 18, y: 1.00 },

    { x: 19, y: 1.74 },

    { x: 20, y: 1.47 },

    { x: 21, y: 1.47 },

    { x: 22, y: 1.47 },

    { x: 23, y: 1.74 },

    { x: 24, y: 1.74 },

    { x: 25, y: 1.74 },

    { x: 27, y: 1.5 },

    { x: 28, y: 1.5 },

    { x: 29, y: 1.5 }

]


const gasoline = [

    { x: 0, y: 1.35 },

    { x: 1, y: 1.35 },

    { x: 2, y: 1.35 },

    { x: 3, y: 1.35 },

    { x: 4, y: 1.90 },

    { x: 5, y: 1.90 },

    { x: 6, y: 1.90 },

    { x: 7, y: 1.92 },

    { x: 8, y: 1.50 },

    { x: 9, y: 1.50 },

    { x: 10, y: 1.3 },

    { x: 11, y: 1.3 },

    { x: 12, y: 1.3 },

    { x: 13, y: 1.3 },

    { x: 14, y: 1.3 },

    { x: 15, y: 1.32 },

    { x: 16, y: 1.40 },

    { x: 17, y: 1.44 },

    { x: 18, y: 1.02 },

    { x: 19, y: 1.02 },

    { x: 20, y: 1.02 },

    { x: 21, y: 1.02 },

    { x: 22, y: 1.02 },

    { x: 23, y: 1.02 },

    { x: 24, y: 1.02 },

    { x: 25, y: 1.02 },

    { x: 27, y: 1.30 },

    { x: 28, y: 1.30 },

    { x: 29, y: 1.30 }

]


const lineSeries = chart.addLineSeries({ dataPattern: DataPatterns.horizontalProgressive })


const lineSeries2 = chart.addLineSeries({ dataPattern: DataPatterns.horizontalProgressive })


lineSeries2.add(diesel.map((point) => ({ x: point.x, y: point.y })))

lineSeries.add(gasoline.map((point) => ({ x: point.x, y: point.y })))



const markerA = chart.addChartMarkerXY()

    .setPointMarker((marker) => marker.setFillStyle((f => f.setColor(ColorHEX('#f00')))))

    .setMouseInteractions(false)

const markerB = chart.addChartMarkerXY()

    .setPointMarker((marker) => marker.setFillStyle((f => f.setColor(ColorHEX('#0f0')))))

    .setMouseInteractions(false)


function getClickInSeriesScale(point, scale) {

    const m = chart.engine.clientLocation2Engine(point.x, point.y)

    return translatePoint(m, chart.engine.scale, scale)

}


chart.onSeriesBackgroundMouseDragStop((obj, ev, b, start) => {

    let pointA = getClickInSeriesScale(start, lineSeries.scale)

    let pointB = getClickInSeriesScale({x:ev.clientX,y:ev.clientY}, lineSeries.scale)


    // move markes to start and end points

    markerA.setPosition(pointA)

    markerB.setPosition(pointB)

})

<script src="https://unpkg.com/@arction/lcjs@1.3.1/dist/lcjs.iife.js"></script>



查看完整回答
反對(duì) 回復(fù) 2022-10-27
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)