GoJs中標(biāo)題和縮略圖使用技巧
前言
在可視化圖形中為了方便區(qū)分,需要給圖形一個(gè)標(biāo)題??梢栽诋?huà)布外面用html
調(diào)整位置之后作為圖形的標(biāo)題,當(dāng)然也可以在畫(huà)布內(nèi)部進(jìn)行一個(gè)標(biāo)題的繪制。在畫(huà)布上的節(jié)點(diǎn)數(shù)據(jù)量比較大的時(shí)候,也需要用到縮略圖對(duì)圖形進(jìn)行一個(gè)縮略顯示并且拖動(dòng)縮略圖的框選來(lái)重點(diǎn)的畫(huà)布中的部分?jǐn)?shù)據(jù)。
標(biāo)題的使用
還是以前面的數(shù)據(jù)為例,在原有數(shù)據(jù)的基礎(chǔ)上給圖形增加一個(gè)標(biāo)題代碼示例如下
//data nodes: [ { key: "1", color: "#99FFFF", text: "三國(guó)", figure: "Rectangle" }, { key: "1-1", color: "#FF0000", text: "魏", figure: "Circle" }, { key: "1-2", color: "#FFFF66", text: "蜀", figure: "Circle" }, { key: "1-3", color: "#0000FF", text: "吳", figure: "Circle" }, ], links: [ { from: "1", to: "1-1", }, { from: "1", to: "1-2", }, { from: "1", to: "1-3", }, ], //methods this.myDiagram.nodeTemplate = $$( go.Node, "Vertical", $$( go.Shape, "Circle", { width: 30, height: 30, name: "ICON" }, new go.Binding("fill", "color"), new go.Binding("figure", "figure") ), $$(go.TextBlock,new go.Binding("text", "text")) );
隨圖形變化的標(biāo)題
增加一個(gè)隨圖形變化的標(biāo)題,可以通過(guò)location
給標(biāo)題一個(gè)廚師的定位
this.myDiagram.add( $$(go.Part, { location: new go.Point(0, -80) }, $$(go.TextBlock, "三國(guó)爭(zhēng)霸", { font: "bold 24pt sans-serif", stroke: "#67B73C" })) );
由上面圖形可以看出,在圖像的滾動(dòng)以及整體的放大縮小的過(guò)程中。圖形的標(biāo)題都會(huì)隨著圖形的本身進(jìn)行同樣的放大和縮小。相當(dāng)于把標(biāo)題當(dāng)做了一個(gè)游離的文本節(jié)點(diǎn)。當(dāng)然你也可以設(shè)置go.Part
的屬性selectable:false
。這樣你在拖動(dòng)標(biāo)題的時(shí)候,整個(gè)圖形都會(huì)隨著拖動(dòng)。因此標(biāo)題無(wú)法單獨(dú)移動(dòng),刪除。
不隨圖形變化的標(biāo)題
實(shí)現(xiàn)不隨圖形變化的標(biāo)題,最簡(jiǎn)單的方法是用修改html
的樣式和位置來(lái)實(shí)現(xiàn)圖形的標(biāo)題。此處我們要說(shuō)到的是通過(guò)gojs
來(lái)實(shí)現(xiàn)一個(gè)不隨圖形變化的標(biāo)題。
this.myDiagram.add( $$( go.Part, { _viewPosition: new go.Point(900, 120), layerName: "Grid" }, $$(go.TextBlock, "三國(guó)爭(zhēng)霸", { font: "bold 24pt sans-serif", stroke: "green", }) ) ); this.myDiagram.addDiagramListener("ViewportBoundsChanged", function (e) { e.diagram.commit(function (obj) { obj.parts.each(function (part) { if (part._viewPosition) { part.position = obj.transformViewToDoc(part._viewPosition); part.scale = 1 / obj.scale; } }); }); });
由上面圖形可以看出,在圖像滾動(dòng)和放大縮小的過(guò)程中。圖形的標(biāo)題位置和大小都不會(huì)發(fā)生改變。這樣就可以始終在一個(gè)位置進(jìn)行顯示。其位置的展示類(lèi)似于css
的絕對(duì)定位。但是在圖形滑動(dòng)和放大縮小的過(guò)程中,可以看到標(biāo)題雖然位置和大小沒(méi)有發(fā)生變化。但是好像在過(guò)程中會(huì)發(fā)生閃爍。這是因?yàn)楫?huà)布的底層為H5新增標(biāo)簽canvas
,在canvas
中是通過(guò)獲取2d渲染上下文。在中間的內(nèi)部元素發(fā)生變化的時(shí)候,不是部分元素的替換。其內(nèi)部元素變化的過(guò)程是每次都會(huì)把畫(huà)布中的所有元素擦掉,重繪。一直循環(huán)這個(gè)過(guò)程來(lái)實(shí)現(xiàn)畫(huà)布中顯示元素的變化。
縮略圖的使用
在畫(huà)布中的節(jié)點(diǎn)數(shù)量比較多的時(shí)候,我們又想著重的觀看到某些重點(diǎn)的內(nèi)容顯示。這個(gè)時(shí)候我們就會(huì)對(duì)畫(huà)布的整體進(jìn)行放大,這樣我們的可視區(qū)域就只能顯示部分的畫(huà)布內(nèi)容。如果我們需要從左上角的可視圖形展示切換到右下角的可視圖形展示的過(guò)程中,如果用鼠標(biāo)點(diǎn)擊畫(huà)布逐步拖動(dòng)非常慢,效率很低。這個(gè)時(shí)候就需要使用到縮略圖,在縮略圖內(nèi)部展示選擇框就是我們可視區(qū)域的圖形。我們可以拖動(dòng)框選的矩形就可以看到畫(huà)布的人和位置了。非常的方便。縮略圖的使用方法如下
//html <div id="myOverviewDiv"></div> //methods let myOverview = $$(go.Overview, "myOverviewDiv", { observed: this.myDiagram } )
縮略圖是使用go.Overview
來(lái)實(shí)現(xiàn)的,因?yàn)槠淅^承go.Diagram
。所以使用方法基本一致。都是需要一個(gè)div容器進(jìn)行初始化,然后其observed
屬性為圖形的實(shí)例,在本例中是this.myDiagram
。
總結(jié)
在一個(gè)畫(huà)布中,標(biāo)題和縮略圖的使用非常的普遍。一個(gè)能表述中可視化圖形的功能。另外一個(gè)則是方便我們重點(diǎn)觀察畫(huà)布的某些元素。增加對(duì)可視化圖形信息提取的效率。
以上就是GoJs中標(biāo)題和縮略圖使用技巧的詳細(xì)內(nèi)容,更多關(guān)于GoJs標(biāo)題縮略圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 提升Go語(yǔ)言開(kāi)發(fā)效率的小技巧實(shí)例(GO語(yǔ)言語(yǔ)法糖)匯總
- 學(xué)會(huì)提升Go語(yǔ)言編碼效率技巧拒絕加班!
- go?mongox簡(jiǎn)潔高效文檔操作及bson數(shù)據(jù)構(gòu)造流暢技巧
- 從錯(cuò)誤中學(xué)習(xí)改正Go語(yǔ)言六個(gè)壞習(xí)慣提高編程技巧
- Go語(yǔ)言中節(jié)省內(nèi)存技巧方法示例
- Go內(nèi)存節(jié)省技巧簡(jiǎn)單實(shí)現(xiàn)方法
- go語(yǔ)言?xún)?yōu)雅地處理error工具及技巧詳解
- Go語(yǔ)言開(kāi)發(fā)技巧必知的小細(xì)節(jié)提升效率
相關(guān)文章
javascript如何實(shí)現(xiàn)create方法
這篇文章主要介紹了javascript如何實(shí)現(xiàn)create方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11javascript 動(dòng)態(tài)改變層的Z-INDEX的代碼style.zIndex
javascript 動(dòng)態(tài)改變層的Z-INDEX的代碼style.zIndex...2007-08-08JS新手入門(mén)數(shù)組處理的實(shí)用方法匯總
這篇文章主要給大家介紹了關(guān)于JS新手入門(mén)數(shù)組處理實(shí)用方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04js實(shí)現(xiàn)控制整個(gè)頁(yè)面滾動(dòng)條的位置
這篇文章主要介紹了js實(shí)現(xiàn)控制整個(gè)頁(yè)面滾動(dòng)條的位置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10利用javascript如何隨機(jī)生成一定位數(shù)的密碼
這篇文章主要給大家介紹了關(guān)于利用javascript如何隨機(jī)生成一定位數(shù)的密碼的相關(guān)資料,文中給出了詳細(xì)的示例代碼,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09微信小程序使用map組件實(shí)現(xiàn)檢索(定位位置)周邊的POI功能示例
這篇文章主要介紹了微信小程序使用map組件實(shí)現(xiàn)檢索(定位位置)周邊的POI功能,涉及微信小程序基于map組件與高德地圖PAI接口的定位操作相關(guān)使用技巧,需要的朋友可以參考下2019-01-01基于layer.js實(shí)現(xiàn)收貨地址彈框選擇然后返回相應(yīng)的地址信息
這篇文章主要介紹了基于layer.js實(shí)現(xiàn)收貨地址彈框選擇然后返回相應(yīng)的地址信息,需要的朋友可以參考下2017-05-05