图形和负纵坐标



我想显示可以具有负坐标(X 和 Y(的点。目前,具有负 X 的点似乎正确显示(即:它们位于具有正 X 的点的左侧(。

但是,具有负 Y 的点显示在我的图形顶部:例如,Y = -5 的点将显示在 Y = -3 的点的顶部......

如何撤消此Graphics显示?

我的(简单(代码:

package general_classes;
import javax.swing.*;
import java.awt.*;
import java.util.List;
public class Graph extends JFrame {
    private List<StorableData> list_detected_points;
    private List<StorableData> list_all_points;
    private Cupple barycenter;
    public Graph(String title, List<StorableData> list_all_points, List<StorableData> list_detected_points) {
        double scaling_coef = 200;
        double move_x = 500, move_y = 500;

        this.add(new JPanel() {
            private Graphics graphics;
            int x, y;
            private void drawPoint(Cupple storable_data) {
                x = (int) (storable_data.getNumber(0) * scaling_coef + move_x);
                y = (int) (storable_data.getNumber(1) * scaling_coef + move_y);
                graphics.fillRect(x, y, 10, 10);
                graphics.drawString(storable_data.toString(), x - 5, y - 5);
            }
            @Override
            public void paint(Graphics graphics) {
                this.graphics = graphics;
                for(StorableData storable_data : list_all_points) {
                    graphics.setColor(Color.WHITE);
                    this.drawPoint((Cupple) storable_data);
                }
                if(list_detected_points != null) {
                    for (StorableData storable_data : list_detected_points) {
                        graphics.setColor(Color.RED);
                        this.drawPoint((Cupple) storable_data);
                    }
                }
            }
        });
        this.setVisible(true);
    }
}

假设您收到了需要绘制的所有点,首先找到每个维度上的最小和最大坐标。这样,您可以获得比例因子(使用最小值和最大值之间的距离以及您拥有的绘图框的大小(和偏移量(以便最小值对应于绘图框的零(。

然后使用上面的数据创建一个AffineTransform,它将在您绘制时正确转换每个点。

相关内容

  • 没有找到相关文章

最新更新