2017-09-27 232 views
0

我有這個代碼,我有在整個畫布上生成隨機矩形。中心還有一個矩形。在Java中繪製矩形

當用戶將鼠標懸停在畫布上時,我需要在中心移動1個矩形。

這裏是我的代碼

package sample; 

import javafx.animation.AnimationTimer; 
import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.canvas.Canvas; 
import javafx.scene.canvas.GraphicsContext; 
import javafx.scene.layout.VBox; 
import javafx.scene.paint.Color; 
import javafx.stage.Stage; 
import java.util.Random; 


public class Main extends Application { 

private static final int DRAW_WIDTH = 800; 
private static final int DRAW_HEIGHT = 500; 

private Animation myAnimation; 
private Canvas canvas; 
private GraphicsContext gtx; 

@Override 
public void start(Stage stage) throws Exception 
{ 

    stage.setTitle("tRIPPy BoXXX"); 

    canvas = new Canvas(DRAW_WIDTH, DRAW_HEIGHT); 
    gtx = canvas.getGraphicsContext2D(); 
    gtx.setLineWidth(3); 
    gtx.setFill(Color.BLACK); 
    gtx.fillRect(0, 0, DRAW_WIDTH, DRAW_HEIGHT); 


    VBox vBox = new VBox(); 
    vBox.getChildren().addAll(canvas); 
    Scene scene = new Scene(vBox, DRAW_WIDTH, DRAW_HEIGHT); 
    stage.setScene(scene); 
    stage.show(); 
    myAnimation = new Animation(); 
    myAnimation.start(); 
} 


class Animation extends AnimationTimer 
{ 
    @Override 

    public void handle(long now) 
    { 

     Random rand = new Random(); 
     double red = rand.nextDouble(); 
     double green = rand.nextDouble(); 
     double blue = rand.nextDouble(); 
     Color boxColor = Color.color(red,green,blue); 
     gtx.setStroke(boxColor); 
.... 

這是我想與用戶的鼠標四處移動框。我自己嘗試了一些東西,但是我不能讓代碼保持它在代碼中的方式。

 ..... 
     int rectX = 800/2; 
     int rectY = 500/2; 
     for (int side = 10; side <= 100; side += 10) { 
     gtx.strokeRect(rectX - side/2, rectY - side/2, side, side); 
     } 


     int centerX = (int)(Math.random()*800); 
     int centerY = (int)(Math.random()*800); 
     for (int side = (int)(Math.random()*100); side <= Math.random()* 100; side += Math.random()*100) 

     { 
     gtx.strokeRect(centerX - side/2, centerY - side/2, side, side); 

     } 
    } 
} 


public static void main(String[] args) 
{ 
    launch(args); 
} 

回答

0

如果您打算將一些圖形周圍移動,您爲什麼然後開始使用畫布?在畫布上,除非你總是想一遍又一遍地重繪所有東西,否則不能移動任何東西。將你的矩形放到場景圖中更適合這個任務。

+0

好的,非常感謝 –