O pacote javafx.scene.canvas
possui entre outras, a classe
GraphicsContext que é usada
para criação de imagens gráficas.
Como a Canvas é uma subclasse de nó,
ela pode ser usada sem problemas no
gráfico de cena do JavaFx.
GraphicsContext com seus recursos
poderosos é considerado o objeto
principal do Canvas.
O programador sempre deve especificar
obrigatoriamente a largura e a altura
e a localização do nó Canvas que será o tamanho
da imagem que se deseja obter.
Aqui está um exemplo do que se pode
fazer com o canvas, mas isto não é nada
se considerarmos as possibilidades de criação
de polígonos complexos
limitado apenas pela imaginação e
capacidade do programador.
Veja abaixo uma imagem do programa em execução:
Veja abaixo o código do programa:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.effect.Reflection;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
public class PROJETO extends Application {
Canvas canvas = new Canvas ( 600, 400 );
GraphicsContext ctx = canvas.getGraphicsContext2D
( );
Pane root = new Pane ( );
Scene scene = new Scene ( root );
Reflection reflection = new Reflection();
//@Override
public void start ( Stage stage ) {
stage.setTitle ( "JAVAFX -
UTILIZANDO CANVAS" );
//Usando fonte em italic
ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
FontPosture.ITALIC, 15 ) );
ctx.setFill ( Color.RED );
ctx.fillText ( "JAVAFX -
UTILIZANDO CANVAS", 190,30 );
//Criando uma moldura retangular
ctx.setStroke ( Color.PINK );
ctx.setLineWidth ( 10.0 );
ctx.strokeRoundRect ( 10, 10, 580, 380, 10, 10 );
//Criando outra moldura de menor tamanho
ctx.setStroke ( Color.BLUE );
ctx.setLineWidth ( 2.0 );
ctx.strokeRoundRect ( 35, 35, 530, 330, 10, 10 );
ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
FontPosture.ITALIC, 12 ) );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Retângulo", 90, 60 );
ctx.setLineWidth ( 4.0 );
ctx.setFill ( Color.AQUA );
//Desenhando um retângulo
ctx.fillRect ( 90, 70, 140, 40 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Sem
preenchimento", 90, 130 );
ctx.setStroke ( Color.BLUE );
// Desenhando um retângulo sem preenchimento
ctx.strokeRect ( 90, 140, 140, 40 );
ctx.fillText ( "Com cantos
arredondados", 90, 200 );
ctx.setStroke ( Color.CORAL );
// Desenhando um retângulo com cantos
arredondados
ctx.strokeRoundRect ( 90, 210, 140, 40, 10, 10 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Quadrado", 90, 270 );
ctx.setStroke ( Color.YELLOW );
//Desnhando um quadrado com cantos
arredondados
ctx.strokeRoundRect ( 90, 280, 40, 40, 10, 10 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Linha", 300, 60 );
ctx.setStroke ( Color.BLACK );
//Largura da linha
ctx.setLineWidth ( 2.0 );
// Desenhando uma linha
ctx.strokeLine ( 400, 70, 300, 70 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Elipse", 300, 90 );
ctx.setStroke ( Color.GREEN );
// Desenhando uma elipse
ctx.strokeOval ( 300, 100, 50, 30 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Com
preenchimento", 300, 150 );
ctx.setFill ( Color.BLUE );
// Desenhando uma elipse com preenchimento
ctx.fillOval ( 300, 160, 50, 30 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Círculo", 300, 210 );
ctx.setStroke ( Color.DARKGRAY );
// Desenhando um círculo
ctx.strokeOval ( 300, 220, 50, 50 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Com
preenchimento", 300, 290 );
ctx.setFill ( Color.DARKGRAY );
// Desenhando um círculo com preenchimento
ctx.fillOval ( 300, 300, 50, 50 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Por: Samuel
Lima", 80, 340 );
ctx.setFill ( Color.BLUE );
ctx.fillText ( "sa_sp10@hotmail.com", 80, 355 );
root.getChildren ( ).add ( canvas );
stage.setScene ( scene );
stage.show ( );
}
//
/////////////////////////////////////////////////////////////////////////
public static void main ( String [ ] args ) {
Application.launch ( args );
}
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.