Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2011, 02:44   #1
amdbodia
Пользователь
 
Аватар для amdbodia
 
Регистрация: 13.05.2009
Сообщений: 71
По умолчанию Создание рисунка путём добавления объектов (AWT)

Поставил перед собой несложную задачу отображать данные, поступающие их COM порта в виде графика в реальном времени.
Думаю попробовать сохранять изображение, а, когда придут новые данные, загружать предыдущее сохранённое изображение, добавлять к нему линию и сохранять его опять.
В общем-то всё упёрлось в сохранение изображения и последующую его прорисовку.
Сейчас код выглядит так:

Код:
class DrawJPanel extends JPanel
{
	final Dimension DIMZ = new Dimension(560,400); 
	Graphics2D g2;
	BufferedImage grid; 
	Raster thisRaster;
	static int xIPoint=0;
	int yPrevPoint=0;
	int yPoint;
	

	DrawJPanel()
	{
		super();
		setPreferredSize(DIMZ);
		setMinimumSize(DIMZ);
		setMaximumSize(DIMZ);
		setBorder(BorderFactory.createLineBorder(Color.BLACK));
		
	}
	

	public void paintComponent(Graphics g)
	{
        int w = this.getWidth();
        int h = this.getHeight();
		super.paintComponent(g);
		g2 = (Graphics2D) g;
		if (grid == null) //Рисование решётки
			{
            // Рассчитывается только при первом запуске
            grid = (BufferedImage)(this.createImage(w,h));
            g2 = grid.createGraphics();
            for (int x=0; x<w; x+=10) {g2.drawLine(x, 0, x, h);}
            for (int y=0; y<h; y+=10) {g2.drawLine(0, y, w, y);}
			}
		else
			grid.setData(thisRaster); //Восстановление изображения
		g2.drawImage(grid, null, 0, 0);
		g2.drawLine(xIPoint++, yPrevPoint, xIPoint, yPoint); //Собственно, рисование новой линии
		thisRaster=grid.getData(); //Сохранение изображения
		
	}
	
	public void addNewLine(int yPoint) //Этот метод вызывается, когда приходят новые данные
	{
		yPrevPoint=this.yPoint;
		this.yPoint=yPoint;
		this.repaint(); //Перерисовка
	}

}
В общем, возможно я вообще не в ту степь пошёл, связавшись с этим BufferedImage, но другого способа я не придумал. Впрочем, этот тоже не работает - отображается только текущая линия.
amdbodia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание и уничтожение объектов. Время жизни объектов C++/C# Anett// Помощь студентам 0 24.10.2011 23:26
Создание рисунка в фотошопе через делфи ramzes777 Мультимедиа в Delphi 6 01.10.2011 21:06
Автоматизированное тестирование AWT-приложений 4y4z Общие вопросы по Java, Java SE, Kotlin 0 27.08.2011 23:07
Создание объектов voltageminh Общие вопросы C/C++ 7 11.05.2011 08:51
Интерактивная схема с возможностью добавления/удаления/перемещения объектов в Run-Time Demonmerc Мультимедиа в Delphi 2 02.04.2011 20:57