2016-04-07 15 views
4

JavaFX uygulamamda logo adlı bir svg grafiğini görüntülemek istiyorum. WebView kullanmaya karar verdim ve grafiği WebView üzerinden gösterdim.WebGösterimi SVG'yi sabit piksel yüksekliğine göre ölçeklendirmek nasıl?

fxml dosya

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

Ana Denetleyicisi sınıfı

 // [...] 
     @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); 
     // [...] 
    } 

grafik görüntüler, ancak boyut kapalıdır. Ben otomatik olarak genişlik sabit bir piksel yükseklik yapmak istiyorum. Benim sorunum sadece logo.setScaleX(0.8d); ve logo.setScaleY(0.8d);, bir faktör tarafından ölçeklendirebilirsiniz, çünkü ben doğru faktörü bulmak için sonsuza kadar keman olurdu, aynı zamanda svg değiştirirken yeniden ayarlanması gerekir, aynı zamanda da istenmeyen. Yani, sorum şu: WebView (içerik), genişlik için en boy oranını koruduğu sabit piksel yüksekliğine (örn. 100 px) nasıl ölçekleyebilirim?

cevap

0

Sizin için maxWidht maxHeight veya prefWidth prefHeight özelliklerini kullanmayı denediniz mi?

Bu çalışmadan ve tek seçeneklerden biri, scaleX & scaleY ile yapılmasıdır. Sadece sizin için yapacak bir tür rutin yazabilirsiniz.

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); 
    } 

} 
+0

'maxWidht',' maxHeight' vb. Yalnızca görünümü kırp ve görüntünün yalnızca yarısı gösterilir. – PendingValue

+0

'scaleTo (WebView, Int)' sizin için hile yapmak gibi görünmüyordu. Int boyutunun piksel cinsinden yükseklik/genişlik olduğunu mu varsayıyorum? – PendingValue

0

SVG dosyasının width/height özelliklerinin söyleyecek bir şeyi var mı? Öyleyse, ikisini de% 100'e ayarlamayı denediniz mi?

+0

Evet, özellikler var ve dosyanın sahip olduğu şekilde görüntüleniyor. Şimdiye kadar, dosyayı elle düzenledim ve istediğim yüksekliğe ayarladım. Ancak, bu nasıl yapılır? – PendingValue

+0

Bekle, SVG dosyasının içindeki svg etiketinin genişlik ve yükseklik özelliklerini kastediyorum. Bunları% 100'e ayarladın mı? – Tomas

İlgili konular