Повернуть текст на холсте - Java

Узнай цену своей работы

Формулировка задачи:

Столкнулся с проблемой, на холсте ни как не поворачивается текст на определенный угол такая же ситуация и с линией, но если линию на холсте можно повернуть задав разные координаты, то у текста всего три координаты, которые не влияют на угол поворота есть ли какой способ повернуть текст? и одну созданную линию из трех существующих? пробовал
Листинг программы
  1. gc.setRotate(90);
// текст так повернулся что вообще пропал, и таким способом вращается весь графический контент, соответственно для одной линии или текста графический контент нужно повернуть в обратную сторону, что по моему не лучшее решение
Листинг программы
  1. import javafx.application.*;
  2. import javafx.application.Application;
  3. import javafx.stage.*;
  4. import javafx.scene.*;
  5. import javafx.scene.Scene;
  6. import javafx.scene.layout.*;
  7. import javafx.scene.control.*;
  8. import javafx.scene.effect.*;
  9. import javafx.scene.paint.*;
  10. import javafx.scene.shape.*;
  11. import javafx.scene.text.*;
  12. import javafx.geometry.*;
  13. import javafx.event.*;
  14. import javafx.scene.canvas.*;
  15. import javafx.scene.input.MouseEvent;
  16. import javafx.scene.Cursor;
  17. import java.awt.event.InputEvent;
  18. import javafx.scene.input.KeyEvent;
  19. import javafx.scene.layout.StackPane;
  20. import javafx.stage.Stage;
  21. import javafx.scene.shape.*;
  22. import javafx.scene.transform.Scale;
  23. import javafx.scene.transform.Translate;
  24. import javafx.scene.Group;
  25. import javafx.scene.layout.VBox;
  26. import javafx.scene.paint.Color;
  27. import javafx.event.EventHandler;
  28. import javafx.scene.input.InputEvent.*;
  29. import javafx.scene.Node;
  30. import javafx.scene.control.ListView;
  31. import javafx.scene.control.TextField;
  32. import javafx.scene.effect.DropShadow;
  33. import javafx.scene.effect.PerspectiveTransform;
  34. import javafx.stage.Stage;
  35. import javafx.collections.FXCollections;
  36. import javafx.collections.ListChangeListener;
  37. import javafx.scene.input.KeyEvent; // пакет обработки нажатий с клавы javafx
  38. import javafx.util.converter.*;
  39. import javafx.scene.input.*;
  40. import java.util.Scanner;
  41. import java.io.*;
  42. import java.nio.*;
  43. import java.nio.channels.*;
  44. import java.nio.file.*;
  45. import java.net.*;
  46. import java.text.*;
  47. import javafx.util.*;
  48. import java.util.regex.Pattern;
  49. import javafx.fxml.FXML;
  50. import javafx.scene.canvas.*;
  51. import javafx.scene.canvas.Canvas;
  52. import javafx.scene.canvas.GraphicsContext;
  53. import javafx.scene.image.Image;
  54. import javafx.geometry.Insets;
  55. import javafx.stage.Stage;
  56. import javafx.stage.StageStyle;
  57. import javafx.scene.Cursor;
  58. import javafx.scene.Scene;
  59. import javafx.scene.control.Alert;
  60. import javafx.scene.control.Button;
  61. import javafx.scene.control.Tooltip;
  62. import javafx.scene.image.Image;
  63. import javafx.scene.control.Alert.AlertType;
  64. import javafx.scene.layout.AnchorPane;
  65. import javafx.scene.media.AudioClip;
  66. import javafx.scene.control.TableColumn;
  67. import javafx.scene.control.TableView;
  68. import javafx.beans.property.SimpleStringProperty;
  69. import javafx.collections.ObservableList;
  70. import javafx.event.ActionEvent;
  71. import javafx.event.EventHandler;
  72. import javafx.geometry.Insets;
  73. import javafx.scene.Group;
  74. import javafx.scene.control.Button;
  75. import javafx.scene.control.Label;
  76. import javafx.scene.control.TableColumn;
  77. import javafx.scene.control.TableView;
  78. import javafx.scene.control.TextField;
  79. import javafx.scene.control.cell.PropertyValueFactory;
  80. import javafx.scene.layout.HBox;
  81. import javafx.scene.layout.VBox;
  82. import javafx.scene.text.Font;
  83. import java.time.LocalDate;
  84. import javafx.collections.FXCollections;
  85. import javafx.collections.ObservableList;
  86. import javafx.scene.control.cell.PropertyValueFactory;
  87. import javafx.beans.property.StringProperty;
  88. import javafx.collections.FXCollections;
  89. import javafx.collections.ObservableList;
  90. import javafx.fxml.FXML;
  91. import javafx.scene.text.Text.*;
  92. import javafx.scene.transform.Transform.*;
  93. import javafx.scene.transform.Rotate;
  94. import javafx.beans.property.SimpleStringProperty;
  95. import javafx.collections.FXCollections;
  96. import javafx.collections.ObservableList;
  97. import javafx.event.ActionEvent;
  98. import javafx.event.EventHandler;
  99. import javafx.geometry.Insets;
  100. import javafx.scene.control.TableColumn;
  101. import javafx.scene.control.TableColumn.CellEditEvent;
  102. import javafx.scene.control.TableView;
  103. import javafx.scene.control.TextField;
  104. import javafx.scene.control.cell.PropertyValueFactory;
  105. import javafx.scene.control.cell.TextFieldTableCell;
  106. import javafx.geometry.HorizontalDirection;
  107.  
  108. public class ex1 extends Application {
  109. GraphicsContext gc;
  110. Canvas c;
  111. public void K(GraphicsContext gc) {
  112. gc.setStroke(Color.BLACK);
  113. gc.setLineWidth(1.5);
  114. gc.strokeLine(90, 63, 200, 63);
  115. gc.strokeLine(90, 63, 250, 63);
  116. gc.strokeLine(90, 63, 300, 63);
  117. Text t = new Text("Пример текста");
  118. t.setRotate(90);
  119. Rotate ro = new Rotate();
  120. ro.setAngle(90);
  121. t.getTransforms().addAll(ro);
  122. gc.setFont(new Font(20));
  123. gc.setFill(Color.BLACK);
  124. gc.fillText("" +t.getText(), 90, 200);
  125. }
  126.  
  127. public static void main(String[] args) {
  128. launch(args);
  129. }
  130. public void start(Stage myStage) throws Exception {
  131. myStage.setTitle("Title");
  132. AnchorPane rootPane = new AnchorPane();
  133. Scene myScene = new Scene(rootPane, 600, 500);
  134. myStage.setScene(myScene);
  135. c = new Canvas(550, 500);
  136. gc = c.getGraphicsContext2D( );
  137. K(gc);
  138. AnchorPane.setLeftAnchor(c, 10.0);
  139. AnchorPane.setTopAnchor(c, 5.0);
  140. rootPane.getChildren().addAll(c);
  141. myStage.show();
  142. }
  143. }

Решение задачи: «Повернуть текст на холсте»

textual
Листинг программы
  1.         gc.setTransform(new Affine(new Rotate(150, 100, 200)));   // поворот на 150 градусов относительно координат (100,200)
  2.         gc.fillText("Text", 90, 200);
  3.         gc.setTransform(new Affine());   // обнуление поворота для вывода линии
  4.  
  5.         gc.strokeLine(90, 83, 300, 83);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут