Gojs PanelExpanderButton пользовательский значок - PullRequest
0 голосов
/ 31 августа 2018

В Gojs, возможно ли дать кастомную иконку? В моем случае я хотел использовать изображение SVG / PNG в качестве значка PanelExpanderButton.

go.GraphObject.defineBuilder("PanelExpanderButton", function(args) {
      var eltname = /** @type {string} */ (go.GraphObject.takeBuilderArgument(args, "COLLAPSIBLE"));

      var button = /** @type {Panel} */ (
        $("Button",
          { // set these values for the visible binding conversion
            "_buttonExpandedFigure": $(go.Picture, {
                // desiredSize: new go.Size(10, 10),
                source: "assets/images/expand.png"
              },
            ),
            "_buttonCollapsedFigure": $(go.Picture, {
                // desiredSize: new go.Size(10, 10),
                source: "assets/images/collapse.png"
              },
            )
          },
          $(go.Picture, { source: "assets/images/expand.png", desiredSize: new go.Size(10, 10) },
            new go.Binding("figure", "visible", function(vis) { return vis ? button["_buttonExpandedFigure"] : button["_buttonCollapsedFigure"]; })
            .ofObject(eltname)
          )
        )
      );

      var border = button.findObject("ButtonBorder");
      if (border instanceof go.Shape) {
        border.stroke = null;
        border.fill = "transparent";
      }

      button.click = function(e, button) {
        var diagram = button.diagram;
        if (diagram === null) return;
        if (diagram.isReadOnly) return;
        var elt = button.findTemplateBinder();
        if (elt === null) elt = button.part;
        if (elt !== null) {
          var pan = elt.findObject(eltname);
          if (pan !== null) {
            diagram.startTransaction('Collapse/Expand Panel');
            pan.visible = !pan.visible;
            diagram.commitTransaction('Collapse/Expand Panel');
          }
        }
      }

      return button;
    });

Я не могу изменить значок, когда панель развернута / свернута

Здесь я пытаюсь использовать картинку, но безуспешно

Удачного кодирования !!!

1 Ответ

0 голосов
/ 31 августа 2018

«Фигуры» должны быть одним из имен, определенных как Shape.defineFigureGenerator , включая все эти имена фигур, предопределенные в библиотеке. Таким образом, вы не можете использовать Picture таким образом.

Но вы можете скопировать и адаптировать определение «PanelExpanderButton», которое предоставляется на https://gojs.net/latest/extensions/Buttons.js. Таким образом, вы можете изменить его размер и предоставить произвольные формы для его состояний. Если вы хотите использовать SVG, имейте в виду ограничения для конкретной платформы: https://gojs.net/latest/intro/pictures.html#UsingSVGAsPictureSource

...