try this
Rectangle bounds = new Rectangle(Whatever bounds you want to crop to on the game screen);
int dx1 = bounds.x;
int dy1 = bounds.y;
int dx2 = bounds.x + bounds.width;
int dy2 = bounds.y + bounds.height;
int sx2 = bounds.width;
int sy2 = bounds.height;
g.drawImage(image, dx1, dy1, dx2, dy2, 0, 0, sx2, sy2, null, null);
You can calculate the bounding rectangle by having a pre-defined "full" (100%) rectangle, and transform its width according to your percentage variable.