Как центрировать масштабированную векторную графику на кнопке?

Я хочу нарисовать масштабированные узлы SVGPath по центру кнопки. Кнопка должна сохранять свой размер независимо от размера изображения, а SVGPath должны сохранять свои относительные позиции.

Я новичок в JavaFX, поэтому, возможно, я использую неправильный подход. В основном я пытаюсь создать кнопку без текста с наложенным SVG-изображением.

Проблема в том, что изображение кнопки смещено.

<Button prefWidth="30" prefHeight="30">
    <padding>
        <Insets top="0" right="0" bottom="0" left="0"/>
    </padding>
    <graphic>
        <Pane scaleX="0.3" scaleY="0.3">
            <SVGPath fill="BLACK" content="M92.032,33.384L69.047,55.835l5.465,31.662L46.057,72.576L17.634,87.557l5.398-31.673L0,33.481l31.791-4.654L45.98,0
l14.25,28.797L92.032,33.384z"/>
            <SVGPath fill="RED"
                     content="M65.681,48.339c0,10.776-8.804,19.512-19.665,19.512s-19.665-8.736-19.665-19.512
            s8.804-19.512,19.665-19.512S65.681,37.563,65.681,48.339z"/>
        </Pane>
    </graphic>
</Button>

1 ответ

Решение

Я нашел решение. Я думаю, что ключ был этой частью Group документация:

"Любое преобразование, эффект или состояние, примененное к группе, будет применено ко всем дочерним элементам этой группы. Такие преобразования и эффекты НЕ будут включены в границы макета этой группы, однако, если преобразования и эффекты устанавливаются непосредственно для дочерних элементов этой группы, они будут включены в границы макета этой группы."

<Group>
   <Pane scaleX="0.25" scaleY="0.25">
       <SVGPath fill="BLACK"
             content="M92.032,33.384L69.047,55.835l5.465,31.662L46.057,72.576L17.634,87.557l5.398-31.673L0,33.481l31.791-4.654L45.98,0
l14.25,28.797L92.032,33.384z"/>
       <SVGPath fill="RED"
             content="M65.681,48.339c0,10.776-8.804,19.512-19.665,19.512s-19.665-8.736-19.665-19.512
            s8.804-19.512,19.665-19.512S65.681,37.563,65.681,48.339z"/>
   </Pane>
</Group>
Другие вопросы по тегам