Мне нужно нарисовать строки нарисованное изображение. Проект, над которым я работаю, также требует, чтобы строка перемещалась по экрану не менее 22 раз в секунду. Следовательно, его положение может быть где угодно на изображении. Таким образом, перерисовка изображения со строкой на нем будет невозможна, поскольку я чувствую, что есть лучшие способы сделать это, и это излишне потребует ресурсов, перерисовывающих весь образ. Я также попытался использовать panel.getGraphics, а затем покрасить на изображении, но затем весь текст нарисован по всему экрану (код ниже). Мне было интересно, может ли кто-нибудь направить меня в правильном направлении на то, как я могу нарисовать текст над paintImage, но при необходимости ему нужно сбросить его положение. Код, который я попробовал, который не сбрасывает предыдущую позицию, находится ниже.Рисование строк над PaintedImage Java
Оригинальная панель с изображением:
public class PanelForImages extends JPanel{
private BufferedImage image;
public PanelForImages(File image) throws IOException{
//this.image = image;
//URL resource = getClass().getResource("so2.jpg");
this.image = ImageIO.read(image);
}
@Override
public void paintComponent(Graphics g){
//super.paint(g);
//super.paintComponents(g);
super.paintComponent(g);
//g.drawImage(image, 3, 4, this);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
g.drawString("HELLOOOOOOOOOOOOOOOOOOOOOOOO", 400, 400);
//repaint();
}
}
метод, с которым я пытаюсь нарисовать строку над изображением.
public void drawFixationsOnFrame(GazeData gazeData){
Graphics g = this.panelForImages.getGraphics();
g.drawString("TEsting 123", (int)gazeData.smoothedCoordinates.x, (int)gazeData.smoothedCoordinates.y);
g.dispose();
jF.revalidate();
}
Я также попытался сделать новую панель, а затем добавить его к текущему, но это не похоже на работу. Я не уверен, как я могу это сделать, чтобы он появился на панели PanelForImages без скрытия панели.
Возможный дубликат [Использование Graphics2D для наложения текста на BufferedImage и вернуть BufferedImage] (http://stackoverflow.com/questions/2658554/using-graphics2d-to-overlay-text-on-a-bufferedimage -and-return-a-bufferedimage) –
@CatalinaIsland Как? Их текст рисунка над изображением в той же панели. Я не хочу этого делать, потому что тогда я буду рисовать изображение не менее 22 раз в секунду. Я просто хочу иметь возможность печатать изображение ОДНИМ, а затем продолжать менять положение теста, вместо того, чтобы рисовать все изображение. Я немного любитель, поэтому я уверен, что для меня должен быть способ перерисовать ТОЛЬКО текст при необходимости, а не весь образ. Надеюсь, это имеет смысл. – paddy
Может быть, они показывают [здесь] (http://stackoverflow.com/a/3256941/261156)? –