Параметры X / Y снимка узла JavaFX должны быть отрицательными

Выполните тест ниже - голубой прямоугольник отображается по центру. Это намеченный результат. Однако, почему minX и minY области просмотра должны иметь отрицательные значения?

public class NodeScreenshotTest extends Application
{
  public static void main(String[] args)
  {
    Application.launch(args);
  }

  @Override
  public void start(Stage stage)
  {
    stage.setScene(new Scene(createContent()));
    stage.getScene().setFill(Color.BEIGE);
    stage.setTitle(getClass().getSimpleName());
    stage.show();
  }

  private Parent createContent()
  {
    BorderPane content = new BorderPane();
    Rectangle rectangle = new Rectangle(50, 50);
    rectangle.setFill(Color.AQUA);    
    SnapshotParameters params = new SnapshotParameters();
    params.setFill(Color.YELLOW);
    // Viewport x/y negative???
    params.setViewport(new Rectangle2D(-15, -15, 80, 80));
    ImageView iv = new ImageView(rectangle.snapshot(params, null));
    content.setCenter(iv);
    return content;
  }
}

1 ответ

Источник (0,0) соответствующей системы координат здесь - это верхний левый угол узла, для которого вы делаете снимок, то есть прямоугольник в вашем случае. Теперь вы, кажется, хотите, чтобы вокруг вашего прямоугольника была граница шириной 15 растровых единиц. Итак, ясно, что ваш снимок должен начинаться с местоположения -15,-15 и иметь ширину и высоту 50 + 2*15.

Другие вопросы по тегам