Повернуть текст на холсте - Java
Формулировка задачи:
Столкнулся с проблемой, на холсте ни как не поворачивается текст на определенный угол
такая же ситуация и с линией, но если линию на холсте можно повернуть задав разные координаты,
то у текста всего три координаты, которые не влияют на угол поворота
есть ли какой способ повернуть текст?
и одну созданную линию из трех существующих?
пробовал
// текст так повернулся что вообще пропал, и таким способом вращается весь графический контент, соответственно для одной линии или текста графический контент нужно повернуть в обратную сторону, что по моему не лучшее решение
Листинг программы
- gc.setRotate(90);
Листинг программы
- import javafx.application.*;
- import javafx.application.Application;
- import javafx.stage.*;
- import javafx.scene.*;
- import javafx.scene.Scene;
- import javafx.scene.layout.*;
- import javafx.scene.control.*;
- import javafx.scene.effect.*;
- import javafx.scene.paint.*;
- import javafx.scene.shape.*;
- import javafx.scene.text.*;
- import javafx.geometry.*;
- import javafx.event.*;
- import javafx.scene.canvas.*;
- import javafx.scene.input.MouseEvent;
- import javafx.scene.Cursor;
- import java.awt.event.InputEvent;
- import javafx.scene.input.KeyEvent;
- import javafx.scene.layout.StackPane;
- import javafx.stage.Stage;
- import javafx.scene.shape.*;
- import javafx.scene.transform.Scale;
- import javafx.scene.transform.Translate;
- import javafx.scene.Group;
- import javafx.scene.layout.VBox;
- import javafx.scene.paint.Color;
- import javafx.event.EventHandler;
- import javafx.scene.input.InputEvent.*;
- import javafx.scene.Node;
- import javafx.scene.control.ListView;
- import javafx.scene.control.TextField;
- import javafx.scene.effect.DropShadow;
- import javafx.scene.effect.PerspectiveTransform;
- import javafx.stage.Stage;
- import javafx.collections.FXCollections;
- import javafx.collections.ListChangeListener;
- import javafx.scene.input.KeyEvent; // пакет обработки нажатий с клавы javafx
- import javafx.util.converter.*;
- import javafx.scene.input.*;
- import java.util.Scanner;
- import java.io.*;
- import java.nio.*;
- import java.nio.channels.*;
- import java.nio.file.*;
- import java.net.*;
- import java.text.*;
- import javafx.util.*;
- import java.util.regex.Pattern;
- import javafx.fxml.FXML;
- import javafx.scene.canvas.*;
- import javafx.scene.canvas.Canvas;
- import javafx.scene.canvas.GraphicsContext;
- import javafx.scene.image.Image;
- import javafx.geometry.Insets;
- import javafx.stage.Stage;
- import javafx.stage.StageStyle;
- import javafx.scene.Cursor;
- import javafx.scene.Scene;
- import javafx.scene.control.Alert;
- import javafx.scene.control.Button;
- import javafx.scene.control.Tooltip;
- import javafx.scene.image.Image;
- import javafx.scene.control.Alert.AlertType;
- import javafx.scene.layout.AnchorPane;
- import javafx.scene.media.AudioClip;
- import javafx.scene.control.TableColumn;
- import javafx.scene.control.TableView;
- import javafx.beans.property.SimpleStringProperty;
- import javafx.collections.ObservableList;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.geometry.Insets;
- import javafx.scene.Group;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- import javafx.scene.control.TableColumn;
- import javafx.scene.control.TableView;
- import javafx.scene.control.TextField;
- import javafx.scene.control.cell.PropertyValueFactory;
- import javafx.scene.layout.HBox;
- import javafx.scene.layout.VBox;
- import javafx.scene.text.Font;
- import java.time.LocalDate;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.scene.control.cell.PropertyValueFactory;
- import javafx.beans.property.StringProperty;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.fxml.FXML;
- import javafx.scene.text.Text.*;
- import javafx.scene.transform.Transform.*;
- import javafx.scene.transform.Rotate;
- import javafx.beans.property.SimpleStringProperty;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.geometry.Insets;
- import javafx.scene.control.TableColumn;
- import javafx.scene.control.TableColumn.CellEditEvent;
- import javafx.scene.control.TableView;
- import javafx.scene.control.TextField;
- import javafx.scene.control.cell.PropertyValueFactory;
- import javafx.scene.control.cell.TextFieldTableCell;
- import javafx.geometry.HorizontalDirection;
- public class ex1 extends Application {
- GraphicsContext gc;
- Canvas c;
- public void K(GraphicsContext gc) {
- gc.setStroke(Color.BLACK);
- gc.setLineWidth(1.5);
- gc.strokeLine(90, 63, 200, 63);
- gc.strokeLine(90, 63, 250, 63);
- gc.strokeLine(90, 63, 300, 63);
- Text t = new Text("Пример текста");
- t.setRotate(90);
- Rotate ro = new Rotate();
- ro.setAngle(90);
- t.getTransforms().addAll(ro);
- gc.setFont(new Font(20));
- gc.setFill(Color.BLACK);
- gc.fillText("" +t.getText(), 90, 200);
- }
- public static void main(String[] args) {
- launch(args);
- }
- public void start(Stage myStage) throws Exception {
- myStage.setTitle("Title");
- AnchorPane rootPane = new AnchorPane();
- Scene myScene = new Scene(rootPane, 600, 500);
- myStage.setScene(myScene);
- c = new Canvas(550, 500);
- gc = c.getGraphicsContext2D( );
- K(gc);
- AnchorPane.setLeftAnchor(c, 10.0);
- AnchorPane.setTopAnchor(c, 5.0);
- rootPane.getChildren().addAll(c);
- myStage.show();
- }
- }
Решение задачи: «Повернуть текст на холсте»
textual
Листинг программы
- gc.setTransform(new Affine(new Rotate(150, 100, 200))); // поворот на 150 градусов относительно координат (100,200)
- gc.fillText("Text", 90, 200);
- gc.setTransform(new Affine()); // обнуление поворота для вывода линии
- gc.strokeLine(90, 83, 300, 83);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д