Обязательно ли вызывать метод синхронизации NSUserDefaults?

.. нарисуйте 2 строки

blockquote>

Это похоже на суть вопроса в этом вопросе.

Сохраняйте набор строк в расширяемом списке (например, ArrayList) при нажатии / перетаскивании, добавлении новой строки в список и вызове repaint(). В paintComponent(Graphics) повторите сбор и рисуйте каждую строку.

BTW - Я предполагаю, что вы не минимизировали и не восстановили свое окно во время тестирования. Ваши строки (красивые или уродливые) исчезнут!


.. они исчезли. В чем причина?

blockquote>

Методы paint() и paintComponent() вызываются всякий раз, когда GUI нужно перерисовывать. Они могут быть вызваны после того, как перед окном появится другое окно, затем оно возвращается на передний план. В другой раз после восстановления из минимума.

Параметры сохранения строк включают в себя:

  • Хранить местоположения линий (линий) и перерисовывать их все при каждом запросе (как описано выше). Это может работать для большинства целей.
  • Нарисуйте каждую строку до BufferedImage и поместите изображение (в ImageIcon в) JLabel. Этот подход хорошо работает, если область рисования имеет фиксированный размер & amp; ничто никогда не удаляется и может вмещать ... миллионы линий, дуг, полупрозрачных областей, меньших изображений, текста. Используя изображение как поверхность рендеринга, вам больше не понадобится ArrayList, поскольку все, что вы делаете, это добавьте новую строку в изображение и перерисуйте ярлык, чтобы увидеть новую строку и все предыдущие строки.

.. строка не является прямой.

blockquote>

Это из-за «подсказок рендеринга», используемых при рисовании строки. Экран, сделанный из выровненных рядов пикселей, может только идеально делать вертикальные или горизонтальные линии. Чтобы дать «иллюзию» прямой & amp; непрерывная линия под любым другим углом, требует метода, известного как сглаживание . Прочтите открывающие секции Graphics2D для более подробного объяснения и описания RenderingHints.

13
задан Nicolas Miari 1 November 2018 в 09:15
поделиться