欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

GoJs面板繪圖模板go.Panel使用示例詳解

 更新時間:2023年05月05日 10:32:11   作者:沅芷湘蘭  
這篇文章主要為大家介紹了GoJs面板繪圖模板go.Panel使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

go.Panel面板是gojs重要的繪圖模板,上文中我們提到的是可視化圖形中的節(jié)點分組.而go.Panel可以把節(jié)點內(nèi)部分成很多的模塊,并且各個模塊之間相互不會影響。其內(nèi)部可以存放其他的繪圖模板,并且可以設(shè)置其組成部分的大小和位置。并且其內(nèi)部的模板是按照順序進行渲染。

go.Panel的使用

this.myDiagram.nodeTemplate = $$(
  go.Node,
  "Horizontal",
  $$(go.Panel,"Horizontal",
    $$(go.TextBlock,{background:"#67B73C",text:"這是Panel內(nèi)部"}),
    $$(go.Picture,{ width: 100, height: 100,margin:5,source:pic })
  )
);

這就是go.Panel的一個簡單使用,可以看出。go.Panel面板可以看做是節(jié)點內(nèi)部的組。它可以把其他的繪圖模板放到自己的內(nèi)部,然后再內(nèi)部進行不同位置的排列。

go.Panel的類型

go.Panel提供了以下類型方便進行內(nèi)部元器件的排列

go.panel.Auto //內(nèi)部的自動布局
go.panel.Grid //網(wǎng)格化布局
go.panel.Graduated //刻度布局
go.panel.Horizontal //水平排列布局
go.panel.Position //定位布局
go.panel.Table //表格布局
go.panel.Spot // 
go.panel.Vertical //豎直方向布局
go.panel.Viewbox //

go.panel.Auto類型

go.panel.Auto為自動面板,其示例如下

$$(go.Panel,"Auto",{background:"#FF9900"},
    $$(go.Picture,{ width: 100, height: 100,margin:5,source:pic })
),
$$(go.Panel,"Auto",{background:"#FF9900"},
    $$(go.TextBlock,{background:"#67B73C",margin:5,text:"這是Panel內(nèi)部"}),
),
$$(go.Panel,"Auto",{background:"#FF9900"},
    $$(go.TextBlock,{background:"#67B73C",text:"這是Panel內(nèi)部"}),
    $$(go.Picture,{ width: 100, height: 100,margin:5,source:pic })
),
$$(go.Panel,"Auto",{background:"#FF9900"},
    $$(go.Picture,{ width: 100, height: 100,margin:5,source:pic }),
    $$(go.TextBlock,{background:"#67B73C",text:"這是Panel內(nèi)部"})
)

可以看出 Auto面板是以其內(nèi)部的第一個元素為主進行填充,如果內(nèi)部只有一個元素,包裹在元素周圍。如果內(nèi)部有多個元素,則以第一個元素為主,在圖層的最上層,而后以內(nèi)部最大的元素為界,進行包裹。其他元素則是默認(rèn)上下左右居中顯示。

go.panel.Grid類型

go.panel.Grid為網(wǎng)格化面板,其一些配置屬性如下

this.myDiagram.grid.visible = true;//開啟背景網(wǎng)格
this.myDiagram.toolManager.draggingTool.isGridSnapEnabled = true;//拖拽的位移的最小單位,默認(rèn)與背景格相同.
this.myDiagram.grid.gridCellSize = new go.Size(30, 20);//設(shè)置背景單元格的大小
this.myDiagram.toolManager.draggingTool.gridSnapCellSize = new go.Size(20, 20);//設(shè)置拖拽的最小位移單位,不用和背景網(wǎng)格寬度保持一致

通過上面的實例可以看出進行網(wǎng)格化的操作和單元格和位移單位的一些屬性配置,我們還可以對網(wǎng)格進行一個自定義的操作

this.myDiagram.grid = $$(go.Panel, "Grid",  
    { gridCellSize: new go.Size(25, 25) },
    $$(go.Shape, "LineH", { stroke: "#ADD8E6" }),
    $$(go.Shape, "LineV", { stroke: "#90EE90" }),
    $$(go.Shape, "LineH", { stroke: "#67B73C", interval: 6 }),
    $$(go.Shape, "LineV", { stroke: "#00FF00", interval: 6 })
 )

可以通過go.PanelGrid屬性來自定義單元格,來對其進行一個樣式上的修改。但是要注意這個地方的內(nèi)部元素不能是go.TextBlock和go.Picture。否則會報錯。

go.panel.Graduated類型

go.panel.Graduated是刻度面板,可以和go.Shape幾個圖形結(jié)合

$$(
  go.Panel,
  "Graduated",
  {
    graduatedMin: 0, //標(biāo)尺的最小刻度
    graduatedMax: 140, //標(biāo)尺的最大刻度
    graduatedTickBase: 0, //起始點刻度線的值,如果與graduatedMin一樣則是從起始點開始
    graduatedTickUnit: 5, //為每格的刻度代表的值
    background: "transparent",
  },
  $$(go.Shape, { geometryString: "M0 0 H450" }),
  $$(go.Shape, { geometryString: "M0 0 V5" }),
  $$(go.Shape, { geometryString: "M0 0 V10", interval: 4 }),
  // 小刻度的標(biāo)識
  $$(go.TextBlock, {
    interval: 2,
    segmentOffset: new go.Point(0, 8),
    stroke: "blue",
    font: "7pt sans-serif",
  }),
  // 大刻度的標(biāo)識
  $$(go.TextBlock, {
    interval: 4,
    segmentOffset: new go.Point(0, 12),
    stroke: "red",
    font: "bold 12pt sans-serif",
  })
)

可以根據(jù)刻度的不同,利用go.Shapego.TextBlock來繪制自己想要的圖形,不僅僅可以是直線,還可以是儀表盤形式的弧線型。

go.panel.Horizontal類型

go.panel.Horizontal類型是水平排列面板,因此在內(nèi)部元素不是等高的情況下,面板會以最高的元素為高。這樣的話,其他的元素就可以在豎直方向上調(diào)整自己的顯示位置。

$$(go.Panel,"Horizontal",{background:"#FF9900"},
    $$(go.Picture,{ width: 100, height: 100,margin:5,source:pic }),
    $$(go.TextBlock,{background:"#67B73C",text:"居上",alignment: go.Spot.Top}),
    $$(go.TextBlock,{background:"#67B73C",text:"居中",alignment: go.Spot.Center }),
    $$(go.TextBlock,{background:"#67B73C",text:"居下",alignment: go.Spot.Bottom })
),

go.panel.Position類型

go.panel.Position類型為定位面板,與css定位不同的是。其不是上下左右的邊距,而是具體的坐標(biāo),類似垂直坐標(biāo)系。從圖中的數(shù)值可以看出,其坐標(biāo)系是X軸向右,Y軸向下的垂直坐標(biāo)系。

$$(go.Panel, "Position", 
    { background: "#FF9900" },
    $$(go.TextBlock, "(-100,0)", { position: new go.Point(-100, 0),background: "#67B73c" }),
    $$(go.TextBlock, "(-100,-100)", { position: new go.Point(-100, -100),background: "#67B73c" }),
    $$(go.TextBlock, "(0,-100)", { position: new go.Point(0, -100),background: "#67B73c" }),
    $$(go.TextBlock, "(100,-100)", { position: new go.Point(100, -100),background: "#67B73c" }),
    $$(go.TextBlock, "(0,0)", { position: new go.Point(0, 0),background: "#67B73c" }),
    $$(go.TextBlock, "(100,0)", { position: new go.Point(100, 0),background: "#67B73c" }),
    $$(go.TextBlock, "(100,100)", { position: new go.Point(100, 100),background: "#67B73c" }),
    $$(go.TextBlock, "(0,100)", { position: new go.Point(0, 100),background: "#67B73c" }),
    $$(go.TextBlock, "(-100,100)", { position: new go.Point(-100, 100),background: "#67B73c" }),
));

go.panel.Table類型

go.panel.Table類型為表格面板,其實row為行數(shù),column為列數(shù)。rowSpan為行合并,columnSpan為列合并。

$$(go.Panel, "Table",
    $$(go.Panel, "Auto",{row:0,column:0},
        $$(go.Shape, 'Rectangle', { stroke:"#FF9900"}),
        $$(go.TextBlock,{background:"#67B73C",text:"0行0列"}),
    ),
    $$(go.Panel, "Auto",{row:1,column:0},
        $$(go.Shape, 'Rectangle', { stroke:"#FF9900"}),
        $$(go.TextBlock,{background:"#67B73C",text:"1行0列"}),
    ),
    $$(go.Panel, "Auto",{row:1,column:1},
        $$(go.Shape, 'Rectangle', { stroke:"#FF9900"}),
        $$(go.TextBlock,{background:"#67B73C",text:"1行1列"}),
    ),
    $$(go.Panel, "Auto",{row:2,column:0,columnSpan:3},
        $$(go.Shape, 'Rectangle', { stroke:"#FF9900"}),
        $$(go.TextBlock,{background:"#67B73C",text:"2行列合并"}),
    ),
    $$(go.Panel, "Auto",{row:0,column:1},
        $$(go.Shape, 'Rectangle', { stroke:"#FF9900"}),
        $$(go.TextBlock,{background:"#67B73C",text:"0行1列"}),
    ),
    $$(go.Panel, "Auto",{row:0,column:2,rowSpan:3},
        $$(go.Shape, 'Rectangle', { stroke:"#FF9900"}),
        $$(go.TextBlock,{background:"#67B73C",text:"2列行合并"}),
    ),
))

可以看出,Table面板是根據(jù)表格的幾行幾列對其內(nèi)部的元素進行排列,通過rowSpancolumnSpan對第三行和第三列合并之后,第三行的三列為一個單元格,因此文字左右居中顯示。而第三列的三個單元格也進行了合并其顯示在上下居中第二行的單元格位置。

go.panel.Spot類型

go.panel.Spot類型為點布局,其布局方式和position(定位布局類似),但是其控制范圍為0-1,即左上角為(0,0),右下角為(1,1)進行點的定位

$$(go.Panel, "Spot",  // or "Position"
    $$(go.Shape, 'Rectangle', { fill:"#FF9900",stroke: "#FF9900",width:200,height:200}),
    $$(go.TextBlock, { alignment: new go.Spot(0,0),background: "#67B73c",text:"(0,0)" }),
    $$(go.TextBlock, { alignment: new go.Spot(0.5,0),background: "#67B73c",text:"(0.5,0)" }),
    $$(go.TextBlock, { alignment: new go.Spot(1,0),background: "#67B73c",text:"(1,0)" }),
    $$(go.TextBlock, { alignment: new go.Spot(1,0.5),background: "#67B73c",text:"(1,0.5)" }),
    $$(go.TextBlock, { alignment: new go.Spot(1,1,0,0),background: "#67B73c",text:"(1,1)" }),
    $$(go.TextBlock, { alignment: new go.Spot(1,1,50,0),background: "#67B73c",text:"(1,2)" }),
    $$(go.TextBlock, { alignment: new go.Spot(0.5,1),background: "#67B73c",text:"(0.5,1)" }),
    $$(go.TextBlock, { alignment: new go.Spot(0,1),background: "#67B73c",text:"(0,1)" }),
    $$(go.TextBlock, { alignment: new go.Spot(0,0.5),background: "#67B73c",text:"(0,0.5)" }),
    $$(go.TextBlock, { alignment: new go.Spot(0.5,0.5),background: "#67B73c",text:"(0.5,0.5)" }),
));

由上圖可以看出對應(yīng)點的位置,new go.Spot()可以傳四個參數(shù),前面兩個是點在圖中的方位,而后面兩個參數(shù)則是在點的內(nèi)部使用position面板的方式對其進行定位,其顯示效果為(1,1)點出的兩個TextBlock的顯示。

go.panel.Vertical類型

與水平面板相似,豎直面板內(nèi)的元素是豎直方向排列,因此會以面板內(nèi)部最寬的元素為寬,而其他元素則可以調(diào)整水平方向上的位置。而通過把第三行和第三列用

$$(go.Panel,"Vertical",{background:"#FF9900"},
    $$(go.Picture,{ width: 100, height: 100,margin:5,source:pic }),
    $$(go.TextBlock,{background:"#67B73C",text:"居左",alignment: go.Spot.Left}),
    $$(go.TextBlock,{background:"#67B73C",text:"居中",alignment: go.Spot.Center }),
    $$(go.TextBlock,{background:"#67B73C",text:"居右",alignment: go.Spot.Right })
),

go.panel.Viewbox類型

go.panel.Viewbox類型為視圖框面板,其可以對原生進行縮放來適應(yīng)對應(yīng)的面板。

$$(go.Panel,"Horizontal",
    $$(go.Panel,"Viewbox",{ width: 80, height: 80 },
       $$(go.TextBlock, {background: "#67B73C",text: "這是Viewbox面板下的",alignment: go.Spot.Top,})
     ),
     $$(go.Panel,"Auto",background: "#67B73C",text: "這是Auto面板下的",alignment: go.Spot.Top,})
      )
 )

由上圖可以看出,視圖框畫板會根據(jù)自己的寬高對內(nèi)部元素進行一個縮放,以保證對應(yīng)的元素顯示完整。

總結(jié)

go.Panel(面板)的引入,極大的拓展了節(jié)點內(nèi)部布局的拓展空間,如果前面的go.TextBlockgo.Shapego.Picture是節(jié)點內(nèi)元素的堆砌的話。那么go.panel就是讓這些元素進行分塊,然后讓他們顯示到合適的地方。讓節(jié)點顯示的內(nèi)容更合理,也更加好看。

以上就是GoJs面板繪圖模板go.Panel使用示例詳解的詳細內(nèi)容,更多關(guān)于GoJs面板繪圖go.Panel的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • javascript function調(diào)用時的參數(shù)檢測常用辦法

    javascript function調(diào)用時的參數(shù)檢測常用辦法

    js中并不直接支持類似c#的方法重載,所以只能變相的來解決,示意代碼:(利用了內(nèi)置屬性arguments)
    2010-02-02
  • element-ui 圖片壓縮上傳功能實現(xiàn)

    element-ui 圖片壓縮上傳功能實現(xiàn)

    這篇文章主要介紹了element-ui 圖片壓縮上傳功能實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-10-10
  • JavaScript實現(xiàn)返回頂部按鈕案例

    JavaScript實現(xiàn)返回頂部按鈕案例

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)返回頂部按鈕案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 一文教你如何優(yōu)雅的使用WebSocket

    一文教你如何優(yōu)雅的使用WebSocket

    WebSocket最大特點就是服務(wù)器可以主動向客戶端推送信息,客戶端也可以主動向服務(wù)器發(fā)送信息,是真正的雙向平等對話,屬于服務(wù)器推送技術(shù)的一種,下面這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅的使用WebSocket的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 小程序如何使用分包加載的實現(xiàn)方法

    小程序如何使用分包加載的實現(xiàn)方法

    這篇文章主要介紹了小程序如何使用分包加載的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • JS實現(xiàn)定時自動消失的彈出窗口

    JS實現(xiàn)定時自動消失的彈出窗口

    這篇文章介紹了JS實現(xiàn)定時自動消失的彈出窗口,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • AutoJs4.4.1免費版快速接通vscode調(diào)試腳本的操作方法

    AutoJs4.4.1免費版快速接通vscode調(diào)試腳本的操作方法

    這篇文章主要介紹了AutoJs4.4.1免費版快速接通vscode進行調(diào)試腳本,首先下載AutoJs并安裝,下載完成后,將2個apk文件拷貝到手機安裝即可,接下來需要安裝插件,本文分步驟給大家介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • uni-file-picker文件選擇上傳功能實現(xiàn)

    uni-file-picker文件選擇上傳功能實現(xiàn)

    這篇文章主要介紹了uni-file-picker文件選擇上傳,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • 基于javascript的異步編程實例詳解

    基于javascript的異步編程實例詳解

    這篇文章主要介紹了基于javascript的異步編程,結(jié)合實例形式分析了javascript異步編程的原理、實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下
    2017-04-04
  • Bootstrap Scrollspy源碼學(xué)習(xí)

    Bootstrap Scrollspy源碼學(xué)習(xí)

    這篇文章主要介紹了Bootstrap Scrollspy源碼學(xué)習(xí),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論