Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- });
- drawButton.setOnAction(ActionEvent -> {
- if (gc == null) {
- gc = editArea.getGraphicsContext2D();
- }
- });
- editArea.setOnMouseClicked(ActionEvent -> {
- if (editRadio.isSelected() && scaleRadio.isSelected()) {
- clickedPoints.set(clickedPoints.size() - 1,
- scalePolygon(ActionEvent, clickedPoints.get(clickedPoints.size() - 1), scaleRatio.getText()));
- } else {
- collectPolygon(ActionEvent, editArea);
- }
- });
- editArea.setOnMousePressed(ActionEVent -> {
- if (editRadio.isSelected())
- firstPoint = new Point(ActionEVent.getX(), ActionEVent.getY());
- });
- editArea.setOnMouseDragged(MouseDragEvent -> {
- if (editRadio.isSelected() && !scaleRadio.isSelected()) {
- clickedPoints.set(clickedPoints.size() - 1,
- movePolygon(clickedPoints.get(clickedPoints.size() - 1), MouseDragEvent));
- }
- });
- drawButton.setOnAction(ActionEvent -> {
- drawPolygon(Color.BLACK, clickedPoints.get(clickedPoints.size() - 1), 1);
- });
- }
- private List<Point> scalePolygon(MouseEvent actionEVent, List<Point> list, String text) {
- drawPolygon(Color.WHITE, list, 5);
- double k = Double.parseDouble(text);
- list.stream().forEach(point -> {
- point.setX(point.getX() * k + (1 - k) * actionEVent.getX());
- point.setY(point.getY() * k + (1 - k) * actionEVent.getY());
- });
- drawPolygon(Color.BLACK, list, 1);
- return list;
- }
- private List<Point> movePolygon(List<Point> list, MouseEvent event) {
- double deltaX = (firstPoint.getX() - event.getX()) / 50;
- double deltaY = (firstPoint.getY() - event.getY()) / 50;
- drawPolygon(Color.WHITE, list, 5);
- list.stream().forEach(point -> {
- point.setX(point.getX() - deltaX);
- point.setY(point.getY() - deltaY);
- });
- drawPolygon(Color.BLACK, list, 1);
- return list;
- }
- public void collectPolygon(MouseEvent event, Canvas canvas) {
- if (canvas == null) {
- canvas = new Canvas();
- canvas.setWidth(600);
- canvas.setHeight(600);
- }
- Point point = new Point(event.getX(), event.getY());
- List<Point> list = new LinkedList<Point>();
- if (!painted) {
- list = clickedPoints.get(clickedPoints.size() - 1);
- }
- list.add(point);
- if (clickedPoints.size() == 0) {
- clickedPoints.add(list);
- } else {
- clickedPoints.set(clickedPoints.size() - 1, list);
- }
- if (gc == null)
- gc = canvas.getGraphicsContext2D();
- painted = false;
- points++;
- }
- private void drawPolygon(Color color, List<Point> list, int width) {
- double[] xArg = list.stream().mapToDouble(x -> x.getX()).toArray();
- double[] yArg = list.stream().mapToDouble(y -> y.getY()).toArray();
- gc.setLineWidth(gc.getLineWidth());
- gc.setStroke(color);
- gc.setLineWidth(width);
- gc.strokePolygon(xArg, yArg, xArg.length);
- painted = true;
- points = 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement