我正在一個項目,我想要顯示圖像與覆蓋。面板不調整到其轉換的尺寸
我的想法是創建一個AncorPane,在其背景中放置一個ImageView,然後在其上放置幾個形狀。這確實有用。
由於圖像非常大,因此需要根據可用空間縮小比例。毋庸置疑,想要縮小與圖像相關的所有重疊形狀。在視覺上,這通過對AncorPane應用「比例變換」也起作用,但是這裏出現了我的問題。
AncorPane從它的孩子身上獲得它的大小。但即使它們縮小了,AncorPane仍保持未變形圖像的大小。這會產生大量的空白。 我認爲這是一個與不可調整大小的節點之間的佈局界限和父界限之間的差異的問題。
有沒有人有建議設置AncorPane礦石的實際大小另一種擺脫這種不需要的空白的方式。
實施例:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.SceneBuilder;
import javafx.scene.control.ScrollPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Scale;
import javafx.stage.Stage;
public class test extends Application
{
@Override
public void start(final Stage stage) throws Exception
{
final ScrollPane scroll = new ScrollPane();
final Scene scene = SceneBuilder.create().root(scroll).build();
final VBox box = new VBox();
final AnchorPane anchorPane = new AnchorPane();
final ImageView imageView = new ImageView();
final Shape overlayRectangle = new Rectangle(100, 100, 100, 100);
scroll.setContent(box);
box.getChildren().add(anchorPane);
anchorPane.getChildren().addAll(imageView, overlayRectangle);
overlayRectangle.toFront();
imageView.setImage(new Image("http://cdn.sstatic.net/stackoverflow/img/sprites.png"));
final Scale scale = new Scale(0.5, 0.5);
anchorPane.getTransforms().add(scale);
stage.setScene(scene);
stage.show();
}
public static void main(final String[] args)
{
launch();
}
}
運行,就可以看到,滾動條只消失時的窗口大小擴展到兩個時間的圖像尺寸的例子。當。我知道我可以禁用滾動條。這可能適用於示例代碼,但請記住,此示例在很大程度上縮短了。我甚至刪除了動態調整大小。
你的意思是與'sizeToScene()'方法有關的東西嗎?試一試 –
是的我想在AnchorPane功能上做類似'sizeToScene()'的事情。但窗格自動執行此操作。顯然他們調整到佈局邊界而不是兒童的實際可見邊界。這就是我想改變的。 – l2p
可以。發佈[SSCCE](http://sscce.org/) –