sábado, 15 de setembro de 2018

JavaFX - dígitos imagens

Os dígitos deste contador são imagens,
e isto o torna bem diferente dos outros
que postei.
São ao todo onze imagens, dez para os dígitos
de zero a nove e mais uma imagem para o fundo,
esta imagem de fundo é que faz a limpeza da tela.
A idéia era criar dígitos personalizados,
sabemos que isto é possível, mas não é nada fácil
dominar como por exemplo o corel draw para criar fontes,
e nosso tempo é muito curto.


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


                                                                                    












Veja abaixo um vídeo do programa em execução:


Veja abaixo o código do programa: 


import javafx.animation.Animation;

import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.util.Duration;

public class PROJETO extends Application {
     Group root = new Group ( );
     Scene scene = new Scene ( root, 600, 300 );
     Canvas canvas = new Canvas ( 600, 300 );
     GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     private Timeline videoTick;
     int k = 0, l = 0, load     = 1000;
     Image imagem_1  = new Image ( "Zero.png"  );
     Image imagem_2  = new Image ( "Um.png"    );
     Image imagem_3  = new Image ( "Dois.png"  );
     Image imagem_4  = new Image ( "Três.png"  );
     Image imagem_5  = new Image ( "Quatro.png");
     Image imagem_6  = new Image ( "Cinco.png" );
     Image imagem_7  = new Image ( "Seis.png"  );
     Image imagem_8  = new Image ( "Sete.png"  );
     Image imagem_9  = new Image ( "Oito.png"  );
     Image imagem_10 = new Image ( "Nove.png"  );
     Image imagem_11 = new Image ( "FundoBranco.png" );
     // /////////////////////////////////////////////////////////////////////////
     public void Informe ( ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 13 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "Por: ", 200, 230 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Samuel Lima", 240, 230 );
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( "sa_sp10@hotmail.com", 200, 245 );
         ctx.setFill ( Color.RED );
         ctx.fillText ( " MUITO OBRIGADO", 230, 280 );
     }
     // /////////////////////////////////////////////////////////////////////////
     public void FuncUnidade ( ) {
         if ( k == 1 )
              ctx.drawImage ( imagem_1, 450, 140, 130, 150 );
         if ( k == 2 )
              ctx.drawImage ( imagem_2, 450, 140, 130, 150 );
         if ( k == 3 )                
              ctx.drawImage ( imagem_3, 450, 140, 130, 150 );
         if ( k == 4 )                
              ctx.drawImage ( imagem_4, 450, 140, 130, 150 );
         if ( k == 5 )                
              ctx.drawImage ( imagem_5, 450, 140, 130, 150 );
         if ( k == 6 )                
              ctx.drawImage ( imagem_6, 450, 140, 130, 150 );
         if ( k == 7 )                
              ctx.drawImage ( imagem_7, 450, 140, 130, 150 );
         if ( k == 8 )                
              ctx.drawImage ( imagem_8, 450, 140, 130, 150 );
         if ( k == 9 )                
              ctx.drawImage ( imagem_9, 450, 140, 130, 150 );
         if ( k == 10 )
              ctx.drawImage ( imagem_10, 450, 140, 130, 150 );
     }
     // /////////////////////////////////////////////////////////////////////////
     //Método usado como clock criado por mim
     public int Sleep ( int x ) {
         Duration duration = Duration.millis ( x );
         videoTick = new Timeline ( new KeyFrame ( duration,
                   new EventHandler < ActionEvent > ( ) {
              public void handle ( ActionEvent actionEvent ) {
                   k++;
                   System.out.println ( l );
                   ctx.drawImage ( imagem_11, 450, 140, 130, 150 );
                   if ( k < 11 ) {
                        //Imprime o zero entre 0 e 9
                        ctx.drawImage ( imagem_1, 350, 140, 130, 150 );
                        FuncUnidade ( );
                   }
                   if ( k == 11 ) {
                        k = 1;
                        l++;
                   }   
                   if ( l == 1 ) {
                        ctx.drawImage ( imagem_11, 350, 140, 130, 150 );                  
                        ctx.drawImage ( imagem_2, 350, 140, 130, 150 );
                        FuncUnidade ( );
                   }
                   if ( l == 2 ) {
                        ctx.drawImage ( imagem_11, 350, 140, 130, 150 );                  
                        ctx.drawImage ( imagem_3, 350, 140, 130, 150 );
                        FuncUnidade ( );
                   }
                   if ( l == 3 ) {
                        ctx.drawImage ( imagem_11, 350, 140, 130, 150 );
                        ctx.drawImage ( imagem_11, 450, 140, 130, 150 );
                        ctx.drawImage ( imagem_1, 350, 140, 130, 150 );
                        ctx.drawImage ( imagem_1, 450, 140, 130, 150 );
                        l = 0;
                        k = 1;
                   }
              }
         } ) );
         videoTick.setCycleCount ( Animation.INDEFINITE );
         videoTick.playFromStart ( );
         return k;
     }
     // /////////////////////////////////////////////////////////////////////////
     public void start ( Stage stage ) throws Exception {
         stage.setTitle ( "JAVAFX - DÍGITOS IMAGENS" );
         //Usando fonte em italic
         ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
                   FontPosture.ITALIC, 22 ) );
         // Criando uma moldura retangular em canvas
         ctx.setStroke ( Color.rgb ( 128, 0, 128 ) );
         ctx.setLineWidth ( 10.0 );
         ctx.strokeRoundRect ( 5, 5, 590, 290, 5, 5 );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - DÍGITOS IMAGENS", 170, 40 );
         Informe ( );
         Sleep ( load );
         root.getChildren ( ).addAll ( canvas );
         stage.setScene ( scene );
         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.