Вы делаете слишком мало : вы должны нарисовать линию вверх, а затем линию вправо. На вашем месте я бы заключил это в функцию «лестницы»:
public void step( Graphics2d g ) {
Point midPoint = getMidPoint();
Point endPoint = getEndPoint();
drawStep( g, currentPoint, midPoint, endPoint );
currentPoint = endPoint;
}
public void drawStep( Graphics2d g, Point first, Point mid, Point last ) {
g.drawLine( first.x, first.y, mid.x, mid.y );
g.drawLine( mid.x, mid.y, last.x, last.y );
}
public Point getMidPoint(){
return new Point( currentPoint.x, currentPoint.y + stepHeight );
}
public Point getEndPoint(){
return new Point( currentPoint.x + stepWidth, currentPoint.y + stepHeight );
}
Вы слишком много делаете тоже: масштабирование вашего изображения в окне просмотра является специальностью AffineTransform
(вот краткое введение )
public void paint( Graphics gx ) {
Graphics2D g = (Graphics2D) gx;
AffineTransform scale = AffineTransform.getScaleInstance(
xPixels/numberOfSteps*stepWidth,
yPixels/numberOfSteps*stepHeigth );
g.transform(scale);
for( int i = 0; i < numberOfSteps; ++ i ) {
step( g );
}
}
Отказ от ответственности: код не скомпилирован, не проверен - предназначен для подсказки.