У меня есть BufferedImage, отображаемый в JFrame через мой собственный класс.Я решил отобразить BufferedImage, используя свой собственный класс, чтобы я мог масштабировать его.Мой paintComponent и обновление
public class MyBuffIm{
public void paintComponent(Graphics canvas) {
if (bi == null) {
} else {
//bi, maxWidth, and maxHeight were passed to constructor
canvas.drawImage(bi, 0, 0, maxWidth, maxHeight, null);
}
}
public void update(Graphics canvas) {
super.update(canvas);
if(bi != null){
//Got this from some tutorial in the net.
//Done out of desperation :|
paintComponent(bi.getGraphics());
}
}
}
Я переопределил обновление, так как документы говорят что-то вроде: «Если этот компонент не является легким компонентом, AWT вызывает метод обновления в ответ на вызов для перерисовки».Я не совсем уверен, является ли мой компонент легковесным или нет.
В любом случае в моем Runnable есть следующий код (не работает, как я ожидаю):
BufferedImage p = SomeMyBuffIm.getBuffIm();
Vector<Point> randomPixels = getRandomPixels(500);
int limit = randomPixels.size()
for (i = 0; i < limit; i++) {
Point rp = randomPixels.get(i)
p.setRGB(rp.x, rp.y, Color.red.getRGB());
}
SomeMyBuffIm.repaint();
mainFrame.repaint(); //JFrame call to repaint
Мне бы хотелось думать, что, поскольку я масштабирую свое изображение, я просто не могу различить разницу между новым и старым изображениями.Но я пробовал самые большие значения для getRandomPixels до сих пор безрезультатно.Кстати, мое тестовое изображение - просто белый лист, поэтому в нем должны выделяться красные пиксели.
Что-то не так я делаю?