java - 如何将显示 SVG 的 WebView 缩放到固定像素高度?

标签 java svg javafx webview

我想在我的 JavaFX 应用程序上显示一个名为 logo 的 svg 图形。 我决定使用 WebView 并通过 WebView 显示图形。

FXML WebView

<WebView fx:id="logo" 
    disable="true" 
    maxHeight="100" 
    minHeight="100"
    minWidth="100" 
    AnchorPane.leftAnchor="0.0" 
    AnchorPane.rightAnchor="0.0"
    AnchorPane.topAnchor="0.0" />

主 Controller 类的一部分

@FXML WebView logo = new WebView();

@Override
public void initialize(URL location, ResourceBundle resources) {
    String logoUrl = Main.class.getResource("FILENAME.svg").toExternalForm();
    logo.getEngine().load(logoUrl);
}

图形显示,但尺寸不对。我想让它成为一个固定的像素高度,自动缩放宽度。 我的问题是我只能按一个因子缩放它,logo.setScaleX(0.8d);logo.setScaleY(0.8d);, 这不好,因为我会永远摆弄以找到正确的因素,而且在更改 svg 时也需要重新调整, 这也是不需要的。

所以,我的问题是:如何将 WebView(内容)缩放到固定的像素高度(例如 100px),同时保持宽度的纵横比?

最佳答案

您是否尝试过使用 maxWidht maxHeight 或 prefWidth prefHeight 属性对您有用?

如果没有这项工作,唯一的选择是使用 scaleX 和 scaleY。 您可以编写某种例程,它会为您完成。

class WebViewUtil {

    public static void scaleTo(WebView view, Int size) {
        double currentHeight = view.getHeight();
        double currentWidth = view.getWidth();

        double scaleX = size / currentWidth;
        double scaleY = size / currentHeight;
        double scale = Math.min(scaleX, scaleY);

        view.scaleX(scale); view.scaleY(scale);
    }

}

关于java - 如何将显示 SVG 的 WebView 缩放到固定像素高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36471919/

相关文章:

java - 如何用Java写入OS系统日志?

html - 为什么 svg 在 Firefox 中延伸而不是 Chrome

python - 如何在 Linux 的窗口中显示交互式 SVG?

java - 如何与 Hector 设置 Cassandra 中列的生存时间?

java - 如何在 BST 中实现删除代码?

jquery - 使用 slideToggle() 时,preventDefault() 不会阻止移动设备上的 SVG 加载

java - @FXML 自定义组件注入(inject)不会实例化 Controller 中的变量并导致 NullPointerException

HTML 中的 JavaFX 组件?

java - 如何获取 JavaFX 8 中节点的场景坐标? localToScene 似乎不起作用

java - 匿名类是否使外部引用保持 Activity 状态?