Как растянуть вид мультимедиа, сохраняя вид медиа по центру в javafx
Я создание вида средств массовой информации, чтобы растянуть в соответствии с контейнером (анкерной панелью), сохраняя при этом соотношении сторон в средствах массовой информации путем связывания ширины просмотра медиа и высоты по ширине и высоте контейнера. Я обнаружил, что при изменении размера только ширины контейнера вид мультимедиа изменяется, но носитель всегда находится слева от вида мультимедиа или при изменении высоты носитель всегда находится сверху. но я хочу, чтобы он был центрирован как для макета X, так и для макета Y, при этом изменяя размер
Я попытался связать xtranslate представления мультимедиа с вычитанием ширины области привязки и ширины представления мультимедиа, разделенным на 2, но это не работает, поскольку ширина представления мультимедиа связана с шириной контейнера, вычитание между ними всегда будет давать 0, в конце концов xtranslate всегда принимает 0.
mainMediaView.setPreserveRatio(true);
// binding both media view width and height to anchor pane width and height
mainMediaView.fitWidthProperty().bind(centerAnchorPane.widthProperty());
mainMediaView.fitHeightProperty().bind(centerAnchorPane.heightProperty());
// should make media view move to center according to X coordinates
mainMediaView.translateXProperty().bind(centerAnchorPane.widthProperty()
.subtract(mainMediaView.fitWidthProperty()).divide(2));
// should make media view move to center according to Y coordinates
mainMediaView.translateYProperty().bind(centerAnchorPane.heightProperty()
.subtract(mainMediaView.fitHeightProperty()).divide(2));
1 ответ
Вы можете "привязать" ваш mediaView к anchorPane с помощью этого:
centreAnchorPane.setTopAnchor(mainMediaView, 0.0);
centreAnchorPane.setBottomAnchor(mainMediaView, 0.0);
centreAnchorPane.setLeftAnchor(mainMediaView, 0.0);
centreAnchorPane.setRightAnchor(mainMediaView, 0.0);
Теперь установите выравнивание по центру, и все готово ^^
с уважением