小编典典

如何在Java中更改图比例

java

我有一个图表,其中x轴显示时间,y轴显示我的数据。我想通过为x轴选择不同的指标来更改比例。例如
秒,分钟和小时刻度。默认值为秒。因此,如果选择分钟,则图表应该更小且更弯曲。任何的想法?UI
尚未完成,但是您假设将有x和y轴。的参数度确定其应被缩放到第二(度= 1),分钟(度= 60)或小时(度= 3600)

private void drawLines(Graphics g, ArrayList<Point> points,int degree) throws Exception {

    if (points == null || points.isEmpty()) {
        throw new Exception("No points found!!!");
    }

    for (int i = 0; i < points.size() - 1; i++) {

        Point firstPoint = points.get(i);
        Point secondPoint = points.get(i + 1);

        g.drawLine((int) firstPoint.getX(), (int) firstPoint.getY(), (int) secondPoint.getX(),
                (int) secondPoint.getY());
    }

}

阅读 237

收藏
2020-11-23

共1个答案

小编典典

考虑使用jfreechart,它将缩放图形以填充封闭的容器。中看到的示例
这里,封闭容器是一个ChartPanel被添加到该CENTER帧的默认的
BorderLayout。这将使图形随着封闭框架的大小而增大和缩小。

该通用方案使用线性插值法映射模型和视图坐标。给定以下比例,您可以相乘并求解丢失的坐标,如此完整
示例所示,该示例将鼠标坐标映射到图像中的像素坐标。

view.x : panelWidthInPixels :: model.x : modelXRange
view.y : panelHeightInPixels :: model.y : modelYRange

我不想使用JFreeChart。还有其他办法吗?

是的,正如@MadProgrammer评论一样,您可以

使用上面显示的比例将数据缩放到封闭容器中。引用的示例隔离了基本方法。JFreeChart是一个功能齐全的示例。

使用缩放比例将渲染的图像缩放到封闭的容器BufferedImage。本示例将 ComponentHandler绘制成一个BufferedImage大小足以填充附件的JPanel。该background图像在的实现中呈现paintComponent()。调整框架大小以查看效果。

使用应用于图形上下文的变换将渲染的图像缩放到封闭的容器。

2020-11-23