我想在每条线上制作一条间距为200米的简单楼梯线。正如你在代码中看到的那样,它的屏幕高度(y1_world)为2000米,屏幕宽度(x1_world)为1125.该代码只能在斜线位置工作,而不是在楼梯上,这是我的问题。如何在java中使用绘制线绘制楼梯线?
有人能给我一个关于这件事的想法吗?
下面的代码:
public void paint(Graphics g)
{
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setBackground(Color.white);
int x0_pixel = 0;
int y0_pixel = 0;
int x1_pixel = getWidth();
int y1_pixel = getHeight();
int x0_world = 0;
int y0_world = 0;
int x1_world = 2000; // meters
int y1_world = 1125; // meters
double x_ratio = (double) x1_pixel/x1_world;
double y_ratio = (double) y1_pixel/y1_world;
double len = x1_world; // meters
double interval = 200; // meters
int x_world = 0;
int y_world = 0;
while (((y_world += interval) <= y1_world) && ((x_world +=interval) <= x1_world))
{
int x_pixel = convertToPixelX(x_world, x_ratio);
int y_pixel = convertToPixelY(y_world, y_ratio);
g2d.setColor(Color.BLUE);
g2d.drawLine(x_world, y_world, x_pixel, y_pixel);
}
Toolkit.getDefaultToolkit().sync();
g2d.dispose();
}
private static int convertToPixelY(int y_world, double y_ratio)
{
return (int) (y_world * y_ratio);
}
private static int convertToPixelX(int x_world, double ratio)
{
return (int) (x_world * ratio);
}
tnx这个提示..我已经明白了..!它现在的作品.. – sack
+15的好提示.. ;-) – sack