usando mesmo o JavaFX e salvamos com o nome:
"DígitosVermelhos.png" .
Fizemos o mapeamento de cada dígito contido na imagem
e desenhamos num ponto estratégico de nossa janela.
Ora, isto foi uma sugestão de um membro deste grupo,
que me informou que com apenas uma imagem seria
possível fazer este programa, na verdade já fizemos
este trabalho antes mas na hora de criar o programa:
"JavaFX - dígitos imagens" , nem me passou na caneça
de fazer assim.
Agora o que mais me chamou a atenção foi o fato dele
ter sido tão bem recebido pelos programadores,
já está entre os quatro mais visualizados entre os mais
de 310 posts que temos no nosso blog de java.
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 java.io.FileNotFoundException;
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
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;
import javafx.util.Duration;
public class PROJETO extends Application {
Canvas canvas = new Canvas ( 600, 310 );
GraphicsContext ctx = canvas.getGraphicsContext2D ( );
Pane root = new Pane ( );
Scene scene = new Scene ( root );
private Timeline videoTick;
int k = 0, l = 0, load = 1000;
Boolean y = false;
Image imagem_1 = new Image ( "Image2.png" );
Image imagem_2 = new Image ( "DígitosVermelhos.png" );
//
/////////////////////////////////////////////////////////////////////////
public void Informe ( ) {
//Usando fonte em italic
ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
FontPosture.ITALIC, 13 ) );
ctx.setFill ( Color.RED );
ctx.fillText ( "Por: ", 200, 250 );
ctx.setFill ( Color.BLUE );
ctx.fillText ( "Samuel
Lima", 240, 250 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "sa_sp10@hotmail.com", 200, 265 );
ctx.setFill ( Color.RED );
ctx.fillText ( " MUITO
OBRIGADO", 250, 290 );
}
//
/////////////////////////////////////////////////////////////////////////
public void FuncUnidade ( ) {
/*
Os quatro primeiros parâmetros são:
Coluna e linha, largura e altura de onde
pretende-se iniciar o desenhao.
============================================
Os quatro últimos parâmetros são:
Os dois primeiros:
Coluna e linha aonde se deseja aplicar o desenho da imagem
Os dois últimos:
Largura e altura da imagem a ser desenhada.
*/
if ( k == 1 )
//Zero da direita
ctx.drawImage ( imagem_2, 40, 40, 130, 150, 310, 100, 130, 150 );
if ( k == 2 )
//Dígito 1 da direita
ctx.drawImage ( imagem_2, 150, 40, 70, 150, 310, 100, 70, 160 );
if ( k == 3 )
//Dígito 2 da direita
ctx.drawImage ( imagem_2, 220, 40, 130, 150, 310, 100, 130, 150 );
if ( k == 4 )
//Dígito 3 da direita
ctx.drawImage ( imagem_2, 340, 40, 130, 150, 310, 100, 130, 150 );
if ( k == 5 )
//Dígito 4 da direita
ctx.drawImage ( imagem_2, 460, 40, 130, 150, 310, 100, 130, 160 );
if ( k == 6 )
//Dígito 5 da direita
ctx.drawImage ( imagem_2, 30, 180, 130, 150, 310, 90, 130, 150 );
if ( k == 7 )
//Dígito 6 da direita
ctx.drawImage ( imagem_2, 140, 180, 130, 150, 310, 90, 130, 150 );
if ( k == 8 )
//Dígito 7 da direita
ctx.drawImage ( imagem_2, 260, 180, 110, 150, 310, 90, 110, 150 );
if ( k == 9 )
//Dígito 8 da direita
ctx.drawImage ( imagem_2, 360, 180, 130, 150, 310, 90, 130, 150 );
if ( k == 10 )
//Dígito 9 da direita
ctx.drawImage ( imagem_2, 480, 180, 120, 150, 310, 90, 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++;
ctx.clearRect ( 20, 80, 560, 150 );
if ( k < 11 ) {
//Zero da esquerda
ctx.drawImage ( imagem_2, 40, 40, 130, 150, 210, 100, 130, 150 );
FuncUnidade ( );
}
if ( k == 11 ) {
k = 1;
l++;
}
if ( l == 1 ) {
ctx.clearRect ( 20, 80, 560, 150 );
//Dígito 1 da esquerda
ctx.drawImage ( imagem_2, 150, 40, 70, 150, 210, 100, 70, 150 );
FuncUnidade ( );
}
if ( l == 2 ) {
ctx.clearRect ( 20, 80, 560, 150 );
//Dígito 2 da esquerda
ctx.drawImage ( imagem_2, 220, 40, 130, 150, 210, 100, 130, 150 );
FuncUnidade ( );
}
if ( l == 3 ) {
//Zero da direita
ctx.drawImage ( imagem_2, 40, 40, 130, 150, 310, 100, 130, 150 );
//Zero da esquerda
ctx.drawImage ( imagem_2, 40, 40, 130, 150, 210, 100, 130, 150 );
l = 0;
k = 1;
}
}
} ) );
videoTick.setCycleCount ( Animation.INDEFINITE );
videoTick.playFromStart ( );
return k;
}
//
/////////////////////////////////////////////////////////////////////////
public void start ( Stage stage ) throws FileNotFoundException {
stage.setTitle ( "JAVAFX - DÍGITOS
IMAGENS II" );
//Criando uma moldura retangular em canvas
ctx.drawImage ( imagem_1, 20, 40, 580, 70, 30, 30, 580, 70 );
ctx.setStroke ( Color.BLUE );
ctx.setLineWidth ( 10.0 );
ctx.strokeRoundRect ( 10, 10, 580, 290, 10, 10 );
Sleep ( load );
Informe ( );
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.