gpt4 book ai didi

java - 用 drawLine(double, double, double, double) 扩展图形类

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:27:04 26 4
gpt4 key购买 nike

问题://故事从哪里开始
Graphics 类型中的方法 drawLine(int, int, int, int) 不适用于参数 (double, double, double, double)

g.drawLine((int)10*xi, (int)30*yi, (int)90*xi, (int)30*yi);
// where xi is widthScale and yi is heightScale

如你所见,它很糟糕

实际原型(prototype):
public abstract void drawLine(int x1, int y1, int x2, int y2)
在此图形上下文坐标系中的点 (x1, y1) 和 (x2, y2) 之间使用当前颜色绘制一条线。

我想做什么:

g.drawLine(double x1, double y1, double x2, double y2);

g.drawLine(int x1, int y1, int x2, int y2, double widthScale, double heightScale);

把我转向正确的方向并踢我的屁股。

最佳答案

无需“扩展”Graphics,如果您这样做也不会很有用,因为 Swing Graphics 引擎将无法生成您的特定类的对象。所以这引出了一个问题——您将从哪里获得特定的 MyGraphics 对象?

相反,我会使用 Line2D 等形状对象,并使用其 Line2D.Double 子类型构造它,然后使用 Graphics2D 对象绘制它。 Graphics2D 对象可以通过将 Graphics 对象转换为 this 来获得。 大多数 Graphics 对象都允许这样做,包括那些用于在 JComponents 和 BufferedImages 中绘制图像的对象。有一些地方可能不允许这样做,但我还没有遇到过。


编辑
我想知道您的问题是否来自混合 View 与模型。也许您的问题的最佳解决方案是让您的模型使用 double ,而 View 使用整数来显示模型持有的数据。当然,在将数据从模型转换为 View 时,您需要四舍五入。

关于java - 用 drawLine(double, double, double, double) 扩展图形类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21648285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com