Я хочу нарисовать кое-что на JPanel
и прочитать и изучить Выполнение пользовательских Урок живописи. Когда дело дошло до обновления квадрата с помощью repaint
, я почувствовал, что с помощью этой конструкции
private void moveSquare(int x, int y) {
if ((squareX != x) || (squareY != y)) {
squareX = x;
squareY = y;
repaint();
}
}
обеспечивает для этого конкретного примера намного лучшую производительность рисования по сравнению с рекомендуемым.
private void moveSquare(int x, int y) {
int OFFSET = 1;
if ((squareX != x) || (squareY != y)) {
repaint(squareX, squareY, squareW + OFFSET, squareH + OFFSET);
squareX = x;
squareY = y;
repaint(squareX, squareY, squareW + OFFSET, squareH + OFFSET);
}
}
Если я использую последний, квадрат во время процесса перетаскивания выглядит несколько «сплющенным».
Я знаю, что это очень простой пример, но он несколько пугает производительность Java Graphics в целом.