JavaFX如何在不损失质量的情况下使用和缩放图像/图标?

JavaFX如何在不损失质量的情况下使用和缩放图像/图标?,java,user-interface,javafx,graphics,Java,User Interface,Javafx,Graphics,我需要处理JavaFX应用程序中的一些元素,这些元素使用 带有costom符号/图标的按钮 横幅或背景图像 这个应用程序应该运行在具有不同屏幕分辨率的多个设备上,我还(最终)需要缩放图像/图标(强制它们匹配特定的大小/比例)。 那么,如何将质量损失降至最低?我知道,不可能将SVG图形加载到图像视图中,所以我可能必须使用png/jpg。我应该使用不同尺寸的iage/图标的多个版本吗?或者我可以将一幅高分辨率图像缩小到其大小的1/3而不损失质量吗?(顺便问一下,是否可以将svg与css结合使用?

我需要处理JavaFX应用程序中的一些元素,这些元素使用

  • 带有costom符号/图标的按钮
  • 横幅或背景图像
这个应用程序应该运行在具有不同屏幕分辨率的多个设备上,我还(最终)需要缩放图像/图标(强制它们匹配特定的大小/比例)。
那么,如何将质量损失降至最低?我知道,不可能将SVG图形加载到图像视图中,所以我可能必须使用png/jpg。我应该使用不同尺寸的iage/图标的多个版本吗?或者我可以将一幅高分辨率图像缩小到其大小的1/3而不损失质量吗?(顺便问一下,是否可以将svg与css结合使用?

我相信svg路径是可伸缩的,不会丢失质量

fxml:


如果您使用的是Eclipse,您可以安装e(fx)clipse插件,该插件提供了一个工具,可以将普通SVG文件转换为FXML文件,然后直接加载到JavaFX中。这是我对需要缩放的基于矢量的图形的标准过程。

我如何在应用程序中包含带有svg路径的按钮/横幅的背景?我已经详细阐述了一些。在第二个答案中添加了工作示例。希望能有帮助。我不太理解关于按钮背景的问题。谢谢,这对按钮应该有用。但是当我在svg文件中有一个包含不同颜色的徽标或其他东西时,我该怎么办?@Yan_Yan请问另一个问题。我将为您提供另一个示例,因为我不想在这个线程中混为一谈。请接受此答案,并在创建其他问题时通知我。
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.Group?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.SVGPath?>


<VBox xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <StackPane prefHeight="400.0" prefWidth="400.0">
         <children>
            <Group fx:id="iconGroup">
               <children>
                  <SVGPath content="M12 6c1.11 0 2-.9 2-2 0-.38-.1-.73-.29-1.03L12 0l-1.71 2.97c-.19.3-.29.65-.29 1.03 0 1.1.9 2 2 2zm4.6 9.99l-1.07-1.07-1.08 1.07c-1.3 1.3-3.58 1.31-4.89 0l-1.07-1.07-1.09 1.07C6.75 16.64 5.88 17 4.96 17c-.73 0-1.4-.23-1.96-.61V21c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-4.61c-.56.38-1.23.61-1.96.61-.92 0-1.79-.36-2.44-1.01zM18 9h-5V7h-2v2H6c-1.66 0-3 1.34-3 3v1.54c0 1.08.88 1.96 1.96 1.96.52 0 1.02-.2 1.38-.57l2.14-2.13 2.13 2.13c.74.74 2.03.74 2.77 0l2.14-2.13 2.13 2.13c.37.37.86.57 1.38.57 1.08 0 1.96-.88 1.96-1.96V12C21 10.34 19.66 9 18 9z" />
               </children>
            </Group>
         </children>
      </StackPane>
      <HBox>
         <children>
            <Button mnemonicParsing="false" onAction="#onMinusButton" text="-0.5" />
            <Button mnemonicParsing="false" onAction="#onPlusButton" text="+0.5" />
         </children>
      </HBox>
   </children>
</VBox>