【问题标题】:Issue drawing using graphics Java使用图形 Java 绘制问题
【发布时间】:2018-02-06 06:09:41
【问题描述】:

我正在尝试绘制一个带有 for 循环的椭圆形,该循环遍历一个坐标列表,每个坐标列表都包含一个 x 值和 y 值。目前,在我启动程序后,它似乎没有绘制任何东西。第一次画,但是当我在程序运行时尝试画,它似乎没有画。

绘制代码如下:

private void render(){
    bs = display.getCanvas().getBufferStrategy();
    if(bs == null){
        display.getCanvas().createBufferStrategy(3);
        return;
    }
    g = bs.getDrawGraphics();
    //Draw Here!

    DrawGrid(g);
    g.fillOval(100, 100, 10, 10);//this seems to draw
    for(int i = 0; i < points.size();i++){//this doesn't draw....
        System.out.println(points.get(i));
        g.drawString(points.get(i).toString(), points.get(i).x*100-5+100, points.get(i).y-5-300);
        g.fillOval(points.get(i).x*100-5+100, points.get(i).y-5-300, 10, 10);
    }
    //End Drawing!
    bs.show();
    g.dispose();
}

如果您需要更多详细信息,我使用的是 java.awt 库中的图形。另外,我过去也这样做过,但我不知道为什么这次不行。

【问题讨论】:

标签: java graphics awt


【解决方案1】:

这部分是你的问题:

points.get(i).x*100-5+100

特别是x*100

你正在画出屏幕。我们可以通过分解来看到这一点: 让我们假设您有一个点 x=28。

让我们算一下:

对于 X = 28,您将得到以下计算结果:(28 * 100) - (5 + 100) = 2695

2695 的 X 点在我看来非常大。您需要 4k 屏幕或超宽屏幕才能看到它。

解决办法: 想一想您为什么使用x*100,并减少它以使该点适合您的屏幕。此外,如果您有一个小的 y 点,那么它将处于负数(例如:15-5-300 = -290),并且可能会在您的屏幕上方并且看不见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多