![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Vovo4ka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 25.5.2007 Репутация: нет Всего: нет |
Столкнулся с проблемкой отображения текста с помощью Graphics.
Нужно сделать что-то похожее на работу над текстом в Фотошопе. Текст должен быть объектом, предназначенным исключительно для графического использования (как, например, Rectangle, Oval и тп) и иметь следующие свойства: 1. масштабируемость; 2. способность поворачиваться - rotate; 3. способность перемещаться; 4. должен уметь считать свою площадь, периметр; 6. должен сохранять все изменения, произошедшие с ним так, чтобы после загрузки из файла возвращаться в свое последнее состояние; Я вижу 2 способа реализации. Писать String скажем в BufferedImage и с ним уже производить вышеописанные действия, что особого труда не составляет. Но в этом случае возникает проблема с определением точных размеров (длина и ширина всего текста или хотя бы отдельного символа) и с ужасным отображением при масштабировании. И второй способ, совсем уж бредовый, создавать для каждого символа объект, собранный из примитивов. А вот самого простого и правильного способа я как всегда не вижу :( Может кто-то сталкивался с такой задачкой? |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 15 Всего: 27 |
Проассоциируйте со своим текстом объекты классов AffineTransform и FontMetrics. (насчет FontMetrics не уверен, читайте javadoc)
Это сообщение отредактировал(а) fixxer - 26.5.2007, 23:14 -------------------- ![]() |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Создаешь свой визуальный компонент, получаешь у него Graphics2D:
ты получил Shape всей надписи (при желании можно получить побуквенно). Теперь можешь к этому шейпу применять любые трансформации. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Vovo4ka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 25.5.2007 Репутация: нет Всего: нет |
Ребята, спасибо, но это немного не то, что мне нужно.
Вот смотрите. К примеру у меня есть объект Rectangle, конструктор которого создает 4 точки - вершины прямоугольника. В методе paintComponent он рисуется через drawPolygon (а не drawRect!) с помощью массива из иксов и игреков его точек. Это позволяет хранить точные координаты всех элементов объекта. То есть, когда нужно например повернуть такой прямоугольник, то делается это в методе самого класса Rectangle (матрица поворота вектора для каждой точки) и там же сохраняются новые координаты всех точек. То же самое надо сделать и для текста. AffineTransform гораздо удобнее, конечно, но нужно вот именно то, что я описал. Задание такое . Домашнее FontRenderContext и FontMetrics, если я правильно понял, нельзя получить без Graphics. А во время создания объекта Текст, Graphics и близко не будет. К тому же, они, как и GlyphVector, если опять же понял правильно, зависит от настроек конкретной ОС (dpi, еще что-нибудь) и на разных ОС отображаться будет соответственно по разному... (или нет???) |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
1. рендеринг шрифтов сильно зависит от устройства, поэтому просто так GlyphVector не получить. А Graphics можно получить и от невидимого фрейма.
2. можно использовать:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |