Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. });
  2.  
  3. drawButton.setOnAction(ActionEvent -> {
  4. if (gc == null) {
  5. gc = editArea.getGraphicsContext2D();
  6. }
  7.  
  8. });
  9.  
  10. editArea.setOnMouseClicked(ActionEvent -> {
  11. if (editRadio.isSelected() && scaleRadio.isSelected()) {
  12. clickedPoints.set(clickedPoints.size() - 1,
  13. scalePolygon(ActionEvent, clickedPoints.get(clickedPoints.size() - 1), scaleRatio.getText()));
  14. } else {
  15. collectPolygon(ActionEvent, editArea);
  16. }
  17. });
  18. editArea.setOnMousePressed(ActionEVent -> {
  19. if (editRadio.isSelected())
  20. firstPoint = new Point(ActionEVent.getX(), ActionEVent.getY());
  21. });
  22. editArea.setOnMouseDragged(MouseDragEvent -> {
  23. if (editRadio.isSelected() && !scaleRadio.isSelected()) {
  24. clickedPoints.set(clickedPoints.size() - 1,
  25. movePolygon(clickedPoints.get(clickedPoints.size() - 1), MouseDragEvent));
  26. }
  27. });
  28.  
  29. drawButton.setOnAction(ActionEvent -> {
  30. drawPolygon(Color.BLACK, clickedPoints.get(clickedPoints.size() - 1), 1);
  31. });
  32. }
  33.  
  34. private List<Point> scalePolygon(MouseEvent actionEVent, List<Point> list, String text) {
  35. drawPolygon(Color.WHITE, list, 5);
  36. double k = Double.parseDouble(text);
  37. list.stream().forEach(point -> {
  38. point.setX(point.getX() * k + (1 - k) * actionEVent.getX());
  39. point.setY(point.getY() * k + (1 - k) * actionEVent.getY());
  40. });
  41. drawPolygon(Color.BLACK, list, 1);
  42. return list;
  43. }
  44.  
  45. private List<Point> movePolygon(List<Point> list, MouseEvent event) {
  46. double deltaX = (firstPoint.getX() - event.getX()) / 50;
  47. double deltaY = (firstPoint.getY() - event.getY()) / 50;
  48. drawPolygon(Color.WHITE, list, 5);
  49. list.stream().forEach(point -> {
  50. point.setX(point.getX() - deltaX);
  51. point.setY(point.getY() - deltaY);
  52. });
  53. drawPolygon(Color.BLACK, list, 1);
  54. return list;
  55.  
  56. }
  57.  
  58. public void collectPolygon(MouseEvent event, Canvas canvas) {
  59. if (canvas == null) {
  60. canvas = new Canvas();
  61. canvas.setWidth(600);
  62. canvas.setHeight(600);
  63. }
  64. Point point = new Point(event.getX(), event.getY());
  65. List<Point> list = new LinkedList<Point>();
  66.  
  67. if (!painted) {
  68. list = clickedPoints.get(clickedPoints.size() - 1);
  69. }
  70. list.add(point);
  71.  
  72. if (clickedPoints.size() == 0) {
  73. clickedPoints.add(list);
  74. } else {
  75. clickedPoints.set(clickedPoints.size() - 1, list);
  76. }
  77.  
  78. if (gc == null)
  79. gc = canvas.getGraphicsContext2D();
  80.  
  81. painted = false;
  82. points++;
  83. }
  84.  
  85. private void drawPolygon(Color color, List<Point> list, int width) {
  86.  
  87. double[] xArg = list.stream().mapToDouble(x -> x.getX()).toArray();
  88. double[] yArg = list.stream().mapToDouble(y -> y.getY()).toArray();
  89. gc.setLineWidth(gc.getLineWidth());
  90. gc.setStroke(color);
  91. gc.setLineWidth(width);
  92. gc.strokePolygon(xArg, yArg, xArg.length);
  93. painted = true;
  94. points = 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement