基于 X 和 Y 坐标绘制线

用户10454168

我目前正在创建一个程序,您可以在其中创建一个星座,并且一个人输入 X 和 Y 坐标以在画布上获得一颗或多颗星星,我的主要问题是如何获得连接到用户输入的每个点的线,因此做一个星座。我尝试通过单独的尝试进行一段时间和 for 循环,但没有成功,最终我感到困惑。我只需要有人告诉我该怎么做或为什么有效。感谢所有帮助,谢谢,代码也将在下面 + 运行它时的外观图像,我画了一条线来显示它应该是什么样子(https://imgur.com/18VbFPO

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.shape.ArcType;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import java.awt.*;
import java.lang.Math;
import java.util.Scanner;

import static javafx.application.Application.launch;

public class constellation extends Application {
    @Override
    public void start(Stage Stage) throws Exception
    {
        Group root = new Group();
        Scene Scene = new Scene(root);
        Canvas canvas=  new Canvas(500,500);

        root.getChildren().add(canvas);
        Stage.setScene(Scene);

        GraphicsContext gc = canvas.getGraphicsContext2D();
        gc.setFill(Color.BLACK);
        gc.fillRect(0,0,500,500);
        int max = 500;
        int min = 1;
        int maxx = 5;
        int minn = 1;
        int range = max - min + 1;
        int rangee = maxx - minn + 1;
        for (int i = 0 ; i <= 250; i++)
        {

            int randnum = (int)(Math.random() * range) + min;
            int randnum2 = (int)(Math.random() * range) + min;
            int randnum3 = (int)(Math.random() * rangee) + minn;
            int randnum4 = (int)(Math.random() * rangee) + minn;
            gc.setFill(Color.WHITE);
            gc.fillOval(randnum,randnum2,randnum3,randnum4);
            Stage.show();
        }
        Scanner sc = new Scanner(System.in);

        System.out.println("Welcome to the Constellation Simulator(Press any key to continue)");
        String looper = "";
        while (true) {
            double count = 0;
            double x ;
            double y ;
            System.out.println("Hello please enter a X and Y coordinate(s)[enter 'STOP' when you are done with inputting stars]");
            looper = sc.nextLine();
            if(looper.equalsIgnoreCase("stop")){break;}
            x = Double.parseDouble(looper);
            y = Double.parseDouble(sc.nextLine());
            if ((x >500)|| (y > 500)){
                System.out.println("Sorry Invalid input restart the program and re enter your coordinates (500 MAX)");
                System.exit(0);
            }
            if ((x < 0)||(y < 0)){
                System.out.println("Sorry Invalid input, you cannot enter  value(s) less than 0");
                System.exit(0);
            }

            Stage.setTitle("Constellation Simulator");
            gc.setFill(Color.YELLOW);
            gc.fillRect(x,y,10,10);
            gc.setStroke(Color.RED);
            gc.strokeLine(x,y,x,y);

        }
        System.out.println("Please enter your constellation name");
        String constname = sc.nextLine();
        gc.setFill(Color.PAPAYAWHIP);
        gc.setFont(new Font("Papyrus",50));
        gc.fillText(constname,300,450);
        gc.setFill(Color.INDIANRED);
        gc.setFont(new Font("Papyrus",15));
        gc.fillText("-By Alexei Ougriniouk",300,470);
        Stage.show();


    }
    public static void main(String[] args) {
        launch(args);
    }
}
亚尼克·波里耶

您需要 2 个点来绘制一条线,因此您无法在第一次输入后开始绘制。

double startX = -1;
double startY = -1;

while( true ) {

    // ...Your code...

    if( startX > -1 || startY > -1 ) {
       Stage.setTitle("Constellation Simulator");  // Should be outside the while loop
       gc.setFill(Color.YELLOW);  // Should be outside the while loop
       gc.fillRect(x,y,10,10);
       gc.setStroke(Color.RED);  // Should be outside the while loop
       gc.strokeLine(startX,startY,x,y);
    }
}

// Save the current position
startX = x;
startY = y;

可能还有其他方法可以做到这一点,但这是我脑海中第一个蹦出来的方法;)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用x和y坐标绘制2D数据(图像)

来自分类Dev

在php中使用x,y,z坐标绘制结构

来自分类Dev

使用OpenCV,我如何基于x和y坐标裁剪图像,并允许x和y坐标成为裁剪中心?

来自分类Dev

CImg如何从给定的x,y坐标绘制多边形?

来自分类Dev

在gnuplot中从x到y坐标绘制一个正方形

来自分类Dev

如何使用点列表的(x,y)坐标绘制networkx图?

来自分类Dev

如何使用x,y坐标列表绘制曲线线(峰)

来自分类Dev

返回具有坐标(x,y)的元组列表的函数,但是如果使用这些坐标绘制矩形,则它们不应相交

来自分类Dev

如何使用键盘输入基于画布的x和y坐标移动画布中的对象?

来自分类Dev

如何通过绘制PHP Mysql更改x和y坐标?

来自分类Dev

给定 x 和 y 坐标 pygame 绘制形状

来自分类Dev

显示X和Y坐标?

来自分类Dev

如何在Simulink中根据实时(x,y,z)坐标绘制3d图?

来自分类Dev

如何创建文档并在其中填充基于x和y坐标或像素的文本框?

来自分类Dev

如何基于X / Y坐标在屏幕上选择UIView

来自分类Dev

通过x,y坐标列表在图像中绘制圆和X点.asp C#

来自分类Dev

使用 x、y 标题、基于不同颜色的图例绘制散点图

来自分类Dev

createjs,使用x1,y1和x2,y2坐标为线设置动画

来自分类Dev

SQL:使用 x 和 y 坐标显示线信息,更多详细信息如下

来自分类Dev

JavaScript单击X和Y坐标

来自分类Dev

如何从UnsafeMutableBufferPointer获取x和y坐标

来自分类Dev

如何获取视图的X和Y坐标

来自分类Dev

Netbeans:获取X和Y坐标

来自分类Dev

iPhone的中间x和y坐标

来自分类Dev

从注释iOS获取X和Y坐标

来自分类Dev

返回x和y坐标元组的列表

来自分类Dev

如何绘制以给定的X和Y坐标为圆的中间点的圆?

来自分类Dev

获取在Jpanel上绘制的Path2D形状的(起始)X和Y坐标

来自分类Dev

使用vb net中的循环绘制位于x和y坐标中的一排圆

Related 相关文章

  1. 1

    如何使用x和y坐标绘制2D数据(图像)

  2. 2

    在php中使用x,y,z坐标绘制结构

  3. 3

    使用OpenCV,我如何基于x和y坐标裁剪图像,并允许x和y坐标成为裁剪中心?

  4. 4

    CImg如何从给定的x,y坐标绘制多边形?

  5. 5

    在gnuplot中从x到y坐标绘制一个正方形

  6. 6

    如何使用点列表的(x,y)坐标绘制networkx图?

  7. 7

    如何使用x,y坐标列表绘制曲线线(峰)

  8. 8

    返回具有坐标(x,y)的元组列表的函数,但是如果使用这些坐标绘制矩形,则它们不应相交

  9. 9

    如何使用键盘输入基于画布的x和y坐标移动画布中的对象?

  10. 10

    如何通过绘制PHP Mysql更改x和y坐标?

  11. 11

    给定 x 和 y 坐标 pygame 绘制形状

  12. 12

    显示X和Y坐标?

  13. 13

    如何在Simulink中根据实时(x,y,z)坐标绘制3d图?

  14. 14

    如何创建文档并在其中填充基于x和y坐标或像素的文本框?

  15. 15

    如何基于X / Y坐标在屏幕上选择UIView

  16. 16

    通过x,y坐标列表在图像中绘制圆和X点.asp C#

  17. 17

    使用 x、y 标题、基于不同颜色的图例绘制散点图

  18. 18

    createjs,使用x1,y1和x2,y2坐标为线设置动画

  19. 19

    SQL:使用 x 和 y 坐标显示线信息,更多详细信息如下

  20. 20

    JavaScript单击X和Y坐标

  21. 21

    如何从UnsafeMutableBufferPointer获取x和y坐标

  22. 22

    如何获取视图的X和Y坐标

  23. 23

    Netbeans:获取X和Y坐标

  24. 24

    iPhone的中间x和y坐标

  25. 25

    从注释iOS获取X和Y坐标

  26. 26

    返回x和y坐标元组的列表

  27. 27

    如何绘制以给定的X和Y坐标为圆的中间点的圆?

  28. 28

    获取在Jpanel上绘制的Path2D形状的(起始)X和Y坐标

  29. 29

    使用vb net中的循环绘制位于x和y坐标中的一排圆

热门标签

归档