powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / В классе Graphics тормозит метод drawString
14 сообщений из 14, страница 1 из 1
В классе Graphics тормозит метод drawString
    #38169468
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Заметил у себя, что при вызове хотя бы одного метода drawString, отрисовка зависает почти на секунду. Другие методы, типо drawLine, не тормозят, хоть тысячи раз вызывай. А в чем может быть проблема?
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169511
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И такое тоже тормозит почти на секунду:
Код: java
1.
2.
	char[] mas = {'-', 'П', 'А', 'Ш', 'А', '!'};
	graphics2D.drawChars(mas, 0, 6, 123, 321);
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169524
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01Здравствуйте. Заметил у себя, что при вызове хотя бы одного метода drawString, отрисовка зависает почти на секунду. Другие методы, типо drawLine, не тормозят, хоть тысячи раз вызывай. А в чем может быть проблема?
Шрифт какой-нибудь экзотический? Код покажите. Профайлить не пробовали?
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169527
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё, откуда Graphics? Java2D? А то мало ли что там у вас за реализация, SVG, PDF...
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169552
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;

public class Drerter extends JPanel {

    public Drerter() {
    }

    public void paintComponent(Graphics g) {
	super.paintComponent(g);
	drawCoordinatesDesh(g);
    }

    public void drawCoordinatesDesh(Graphics g) {
	Graphics2D graphics2D = (Graphics2D) g;
	graphics2D.setFont(new Font("Helvetica", 1, 10));	
	graphics2D.drawString("-123", 123, 321);
    }
    
}
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169556
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да обычный книжный пример!
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169567
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только что закомментил строку
Код: java
1.
//graphics2D.setFont(new Font("Helvetica", 1, 10));	


И тормозить перестало!
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169571
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczШрифт какой-нибудь экзотический? Код покажите. Профайлить не пробовали?
Реально в шрифте дело оказалось, не ожидал! А что значит профайлить?
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169573
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Спасибо!
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169584
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01Да обычный книжный пример!
Хорошая книжка! Не вы первый на грабли наступили:
http://stackoverflow.com/questions/10360148/java-swing-graphics2d-drawstring-slow-initiation
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169588
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01А что значит профайлить?
Профайлером можно проанализировать выполнение кода и увидеть на какие конкретно методы ушло время работы JVM.
JDK/bin/jvisualvm.exe
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169593
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПаша01А что значит профайлить?
Профайлером можно проанализировать выполнение кода и увидеть на какие конкретно методы ушло время работы JVM.
JDK/bin/jvisualvm.exe
Офигеть, не знал! Вот теперь большое спасибо!
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169598
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01Только что закомментил строку
Код: java
1.
//graphics2D.setFont(new Font("Helvetica", 1, 10));	


И тормозить перестало!
Методы отрисовки на экран очень чуствительные к производительности. Стоит туда напихать подобной ерунды и весь GUI начет жутко лагать. А потом жалуются мол Swing тормозить.
Начать хотя бы с того что вы новый Font создаёте каждый раз. Естественно при попытке его отрисовать происходит поиск в загруженых шрифтах. Самый первый вызов вообще может растянутся на несколько секунд, пока Swing сканирует системные шрифты.
Ну, и сам шрифт можно было один раз задать компоненте и не трогать его в отрисовке вообще.
...
Рейтинг: 0 / 0
В классе Graphics тормозит метод drawString
    #38169607
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczсам шрифт можно было один раз задать компоненте и не трогать его в отрисовке вообще.
На самом деле я так и сделал, но для наглядности тут написал
Код: java
1.
new Font(...)

.
BlazkowiczСамый первый вызов вообще может растянутся на несколько секунд, пока Swing сканирует системные шрифты.
Но про это тоже не знал, спасибо!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / В классе Graphics тормозит метод drawString
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]