![]() |
![]() |
![]() |
![]() |
![]() |
|
The scaling computations required to adjust the
arguments of drawImage are straightforward, albeit tedious:
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class Poster extends JComponent implements PosterInterface {
private String file;
private Image image;
public void setImageFile (String s) {
if (s != file) {
file = s;
if (file == null) {image = null;}
else {
image = MovieAuxiliaries.readMovieImage (file);
}
repaint();
}
}
public void paint(Graphics g) {
if (image != null) {
Dimension d = getSize();
int x, y, width, height, border = 20;
// Tedium begins
double imageRatio = (float) image.getHeight(this)
/ image.getWidth(this);
double windowRatio = (float) d.height / d.width;
if (imageRatio > windowRatio) {
height = d.height - border;
width = image.getWidth(this) * (d.height - border)
/ image.getHeight(this);
}
else {
width = d.width - border;
height = image.getHeight(this) * (d.width - border)
/ image.getWidth(this);
}
x = (d.width - width) / 2;
y = (d.height - height) / 2;
// Tedium ends
g.drawImage(image, x, y, width, height, this);
}
}
public Dimension getMinimumSize() {return new Dimension(200, 300);}
public Dimension getPreferredSize() {return new Dimension(200, 300);}
}