Потребность Восстановить Графическое исходное состояние, Когда Перезаписанная краска или paintComponent

$.ajax({

   type:'POST',
 dataType: "text",
   url:'save.php',
   data:'_id='+$('#id').val()+'&title='+$('#title').val(),
??
data: { id: thisId, value: thisValue }
9
задан banjollity 23 May 2009 в 14:03
поделиться

2 ответа

Вам не следует изменять переданный объект Graphics, а выполнять все ваши графические операции с его копией, которую вы затем удаляете. Тогда вообще не будет необходимости сбрасывать состояние.

public void paintComponent(Graphics g1) {
    super.paintComponent(g1);
    final Graphics2D g = (Graphics2D)g1.create();
    try {
         // ...Whole lotta drawing code...
    } finally {
         g.dispose();
    }
}
15
ответ дан 4 December 2019 в 11:43
поделиться

Да, это очень хорошая практика. Вы не платите много за производительность (по сравнению с фактической операцией рисования) и избавляете себя от неприятностей, если вносите необычные изменения в графический контекст. Однако не переусердствуйте - вам, вероятно, не нужно беспокоиться, например, о настройках цвета.

Альтернатива - ничего не предполагать о графическом контексте и устанавливать все необходимые свойства перед каждым рисованием, если они настроены на что-то шаткое. Старайтесь избегать свободного создания и удаления графических объектов для каждой операции.

Определенные свойства, которые вы всегда должны восстанавливать в случае изменения: (потому что они могут делать плохие вещи и иметь неожиданные последствия):

  • Преобразовать - потому что модификации этого будут накладываться друг на друга и будут очень, очень сложно сбросить. Осторожно: это изменяется с помощью методов translate, shear, scale, rotate и transform в Graphics2D. Изменение преобразований следует использовать с ПРЕДУПРЕЖДЕНИЕМ.
  • Обводка - потому что (по крайней мере, в моей конфигурации), оставление этого значения по умолчанию выполняется намного быстрее, чем любой параметр , даже если он эквивалентен значению по умолчанию. Не спрашивайте - это результат того, что графические конвейеры Java2D ускоряют вариант по умолчанию с использованием графического оборудования.
  • Clip: приведет к странным ошибкам, когда отрисовывается только часть экрана.
  • Составной: большинство операций, вероятно, не ожидают, что это будет что-то странное.

Свойства, о которых не стоит беспокоиться:

  • RenderingHints. Это то, что вы можете легко установить и восстановить, и, как правило, вы хотите оставить их установленными определенным образом (сглаживание и т. Д.) На все время работы приложения. Изменение RenderingHints редко нарушает рендеринг компонентов, хотя может сделать его более уродливым.
  • Цвет фона и цвет краски. Большинство вещей все равно изменят их перед рисованием.
  • Шрифт: аналогично.
3
ответ дан 4 December 2019 в 11:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: