sexta-feira, 17 de agosto de 2018

JavaFX - desenhando polígonos com SVGPath

Já mostramos outras maneiras
de desenhar em JavaFX,
mas este aqui ainda não foi apresentado.
Podemos desenhar caminhos SVG,
utilizando o método:
public void appendSVGPath ( String svgpath );
Com isto é possível desenhar figuras
simples ou polígonos complexos,
concatenando várias String svgpath.
Tudo o que temos que fazer é inserir
as coordenadas (X,Y) em String,
e o Java traça as rotas do caminho svg,

em suas propriedades.
Reflexão: "Algumas vezes penso comigo
mesmo que os caras que criaram o Java
não são deste planeta".
O método appendSVGPath pertence,
a classe Class GraphicsContext,
que é o principal objeto do canvas,
e nesta classe, temos muitos outros
métodos que foram criados pelos
"deuses do java" para serem utilizados
por nós meros mortais.


Veja abaixo uma imagem do programa em execução:



Veja abaixo o código do programa: 


import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
import javafx.scene.layout.Pane;

public class PROJETO extends Application {
     Pane root = new Pane ( );
     Canvas canvas = new Canvas ( 600, 310 );
     GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     Scene scene = new Scene ( root, 600, 310 );
     // /////////////////////////////////////////////////////////////////////////
     public void Informe ( ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "Por: ", 250, 245 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Samuel Lima", 280, 245 );
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( "sa_sp10@hotmail.com", 250, 260 );
         ctx.setFill ( Color.RED );
         ctx.fillText ( " MUITO OBRIGADO", 250, 290 );
     }
     // /////////////////////////////////////////////////////////////////////////
     private void desenha_pentagono ( ) {
         ctx.setStroke ( Color.BLUE );
         ctx.setLineWidth ( 5.0 );
         ctx.beginPath ( );
         ctx.appendSVGPath (
                   //Pentágono
                   //Coluna, linha.
                     "M 310 55" //Ponto A
                   + "L 400 120"//Ponto B
                   + "L 369 226"//Ponto C
                   + "L 253 226"//Ponto D
                   + "L 220 120"//Ponto E
                   );
         ctx.closePath ( );
         ctx.stroke ( );
     }
     // /////////////////////////////////////////////////////////////////////////
     private void desenha_estrela ( ) {
         ctx.setStroke ( Color.RED );
         ctx.setLineWidth ( 5.0 );
         ctx.beginPath ( );
         ctx.appendSVGPath (
                   //Estrela dentro do pentágono
                     "M 394 121"//Ponto B
                   + "L 254 220"//Ponto D
                   + "L 310 61" //Ponto A
                   + "L 367 219"//Ponto C         
                   + "L 225 120"//Ponto E     
                   );
         ctx.closePath ( );
         ctx.stroke ( );
     }
     // /////////////////////////////////////////////////////////////////////////
     public void start ( Stage stage ) throws FileNotFoundException {
         stage.setTitle ( "JAVAFX - DESENHANDO POLÍGONOS COM SVGPATH" );
         ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
                   FontPosture.ITALIC, 15 ) );
         // Criando moldura e dando efeitos
         root.setStyle ( "-fx-padding: 5;"
                   + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 10;"
                   + "-fx-border-insets: 5;"
                   + "-fx-border-radius: 5;"
                   + "-fx-border-color: blue;" );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - DESENHANDO POLÍGONOS COM SVGPATH", 120, 40 );
         Informe ( );
         desenha_pentagono ( );
         desenha_estrela ( );
         stage.setScene ( scene );
         root.getChildren ( ).addAll ( canvas );
         stage.show ( );
     }
     // /////////////////////////////////////////////////////////////////////////
     public static void main ( String args ) {
         launch ( args );
     }
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.