Изгибаем, искажаем и деформируем в Photoshop

Софья Скрылина, преподаватель информационных технологий, г.Санкт-Петербург

Деформировать фрагменты и объекты в Photoshop можно как с помощью команд меню Редактирование, так и с использованием фильтров. Большинство фильтров, применяемых для деформации, входят в группу Искажение, а кроме того, три фильтра — Коррекция дисторсии, Пластика и Исправление перспективы — расположены особняком. Обо всех этих инструментах и пойдет речь в настоящей статье. Также следует отметить, что для деформирования текста Photoshop предлагает особый инструмент, который мы тоже рассмотрим.

Команды меню Редактирование

Если вы раскроете меню Редактирование (Edit), а затем выберете подменю Трансформирование (Transform), перед вами предстанет список команд, позволяющих трансформировать фрагмент изображения. Перечислим их: Масштабирование (Scale), Поворот (Rotate), Наклон (Skew), Искажение (Distort), Перспектива (Perspective) и Деформация (Warp). Однако доступ к этим командам можно получить гораздо быстрее — через режим свободного трансформирования, вход в который осуществляется комбинацией клавиш Ctrl+T (в Mac OS — Command+T), а выход из него — клавишей Enter (в Mac OS — Return). Для включения той или иной команды используйте приведенные ниже приемы:

  1. Для масштабирования фрагмента следует навести указатель мыши на один из маркеров возникшей рамки трансформирования и провести мышь с нажатой кнопкой. Клавиша Shift позволяет сохранять пропорции фрагмента, а Alt выполняет масштабирование из центра.
  2. Если подвести указатель мыши к любой вершине рамки трансформирования, то он примет вид изогнутой стрелки, перемещение которой приводит к повороту фрагмента. Перед тем как повернуть фрагмент, можно сместить центр поворота — для этого необходимо сместить в требуемое место центральный маркер рамки. Так, на рис. 1 поворот осуществляется относительно верхней левой вершины рамки трансформирования. Клавиша Shift позволяет выполнить поворот на угол, кратный 15°.

Для наклона необходимо смещать средний или угловой маркер границы рамки трансформирования, удерживая нажатыми две клавиши — Ctrl и Alt (в Mac OS — Command и Option).

Чтобы добавить эффект перспективы в режиме свободного трансформирования, перетащите верхний или нижний угловой маркер, нажав комбинацию клавиш Shift+Alt+Ctrl (в Mac OS — Shift+Option+Command) — рис. 2.

Активировать команду Искажение (Distort) из режима свободного трансформирования позволяет клавиша Ctrl (в Mac OS — Command) — рис. 3.

Деформация фрагмента

В результате выбора команды Редактирование (Edit) -> Трансформирование (Transform) -> Деформация (Warp) на фрагмент накладывается сетка, редактирование которой выполняется путем изменения положения узлов и угла наклона направляющих (рис. 4).

Чтобы применить изменения и выйти из режима действия этой команды, нажмите клавишу Enter (в Mac OS — Return).

Масштаб с учетом содержимого

Масштаб с учетом содержимого позволяет изменить размер изображения или его фрагмента, не затрагивая людей, здания, животных и т.д. При обычном масштабировании (команда Свободное трансформирование — Free Transform) все пикселы обрабатываются одинаково, а при масштабировании с учетом содержимого в основном затрагиваются пикселы заднего плана и фона. Более того, такое масштабирование позволяет защитить от трансформации выделенную область или области, содержащие цвета, близкие к оттенкам кожи. Так, на рис. 5а представлено исходное изображение коровы, а на рис. 5б — результат обычного масштабирования. Как видите, произошло сплющивание изображения коровы вместе с фоном — выбор команды неудачен.

Рис. 5. Исходная фотография коровы (а); результат применения команды Свободное трансформирование (б); результат применения команды Масштаб с учетом содержимого без предварительных настроек инструмента (в); результат применения команды Масштаб с учетом содержимого с защитой выделенной области (г)

На рис. 5в и г представлен результат применения команды Масштаб с учетом содержимого (Content-aware scaling). На рис. 5в команда выполнялась без предварительных настроек, а на рис. 5г изображение коровы было защищено от масштабирования.

Для защиты фрагмента необходимо создать выделение, сохранить его в альфа-канале, а затем перед масштабированием на панели свойств инструмента выбрать имя альфа-канала из списка Защищать (Protect) — рис. 6.

Для защиты от масштабирования пикселов, цвет которых близок к оттенкам кожи, используется кнопка с изображением человека на панели свойств. Результат действия этой кнопки представлен на рис. 7б .

Марионеточная деформация

Режим марионеточной деформации появился в версии Photoshop CS5. Этот удивительный инструмент позволяет деформировать определенные фрагменты изображения, не затрагивая других его частей. В режиме марионеточной деформации на объект накладывается сетка, редактирование которой приводит к деформации фрагмента. Но, в отличие от команды Деформация (Warp), марионеточная деформация трансформирует объект не с помощью узлов и направляющих сетки, а с использованием булавок.

Булавки обозначаются жирными желтыми точками , которые можно перемещать и относительно них производить поворот сетки. Причем булавки выполняют двоякую роль: защита фрагмента изображения и, наоборот, его деформация. Для деформации используются активные булавки, которые помечаются черной точкой в центре , а неактивные булавки фиксируют часть изображения на месте.

Рассмотрим основные действия с булавками:

1. Добавление булавки производится простым щелчком мыши в режиме марионеточной деформации.

Примечание. Для входа в этот режим следует выполнить команду Редактирование (Edit) -> Марионеточная деформация (Puppet Warp), для выхода из режима — нажать клавишу Enter (в Mac OS — Return) или кнопку на панели свойств .

2. Щелчок мыши по созданной булавке выделяет ее, в результате чего в ее центре появляется черная точка .

Примечание. Для выделения нескольких булавок необходимо щелкать по ним, удерживая нажатой клавишу Shift.

3. Для перемещения булавки сначала нужно выделить ее, а потом протащить при нажатой кнопке мыши (рис. 8).

4. Чтобы повернуть сетку вокруг булавки, следует активировать булавку, а затем выполнить одно из действий:

  • чтобы осуществить поворот вручную, необходимо подвести указатель мыши к булавке, удерживая нажатой клавишу Alt (в Mac OS — Option). Когда появится круг с изогнутой стрелкой, протащить мышь при нажатой кнопке (рис. 9);
  • чтобы поворачивать сетку на заданный угол, необходимо на панели свойств из списка Поворот (Rotate) выбрать пункт Авто (Auto), а в соседнее поле ввести требуемое значение.

5. Если часть сетки перекрывается, то можно изменить ее положение — для этого применяются две кнопки Глубина (Pin Depth) , находящиеся на панели свойств.

6. Для удаления булавки следует использовать любой из способов:

Помимо работы с булавками на панели свойств можно настроить эластичность, частоту и область покрытия сетки. Также возможно отобразить ее или отключить:

  • параметр Режим (Mode) — определяет эластичность сетки. В большинстве случаев используется значение Нормальный (Normal) — рис. 10;
  • параметр Частота (Density) — отвечает за расстояние между узлами сетки, в основном применяется значение Нормальный (Normal);
  • параметр Расширение (Expansion) — отвечает за область покрытия сетки: чем больше это значение, тем больше внешний край сетки (рис. 11). По умолчанию установлено значение 2 пиксела;
  • флажок Сетка (Show Mesh) — отображает или снимает сетку.

С помощью марионеточной деформации вы легко можете повернуть руку или ногу (рис. 12а ), изогнуть прямую линию в круг или в какую-нибудь цифру, к примеру в восьмерку или девятку (рис. 12б ).

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

Рис. 12. Примеры использования марионеточной деформации: а — встаем на мостик, б — изгибаем георгиевскую ленточку в девятку

Фильтры группы Искажение

Почти все фильтры группы Искажение (Distort) производят геометрические искажения, создавая трехмерные или другие эффекты изменения формы. Назовем некоторые из них:

  • Рассеянное свечение (Diffuse Glow) — придает изображению цвет со свечением и шумом;
  • Океанские волны (Ocean Ripple), Рябь (Ripple) и Волна (Wave) — используются для имитации ряби и волн на воде;
  • Скручивание (Twirl) и Зигзаг (Zig Zag) — применяются для создания кругов на воде или эффекта закручивания (рис. 13);
  • Смещение (Displace) — деформирует изображение на основе карты смещения, которая представляет собой альфа-канал, сохраненный в формате PSD;
  • Стекло (Glass) — создает впечатление, что поверх изображения лежит стекло, рисунок и структура которого настраиваются в данном фильтре;
  • Искривление (Shear) — позволяет изогнуть изображение вдоль кривой, которая рисуется в области предварительного просмотра. В некоторых случаях этот фильтр можно заменить командой Редактирование (Edit) -> Деформация (Wrap).

Только три фильтра из этой группы могут быть применены с помощью галереи фильтров: Рассеянное свечение (Diffuse Glow), Стекло (Glass) и Океанские волны (Ocean Ripple).

Рис. 13. Примеры использования фильтра Зигзаг из группы Искажение: а — для рисования кругов на воде, б — для закручивания краев рамки

Коррекция дисторсии

Фильтр Коррекция дисторсии (Lens Correction) предназначен для исправления дефектов, создаваемых объективом при съемке. Это могут быть бочкообразные и подушкообразные искажения,
виньетирование или хроматическая аберрация.

Фильтр (Filter) -> Коррекция дисторсии (Lens Correction).
В области предварительного просмотра можно наложить на изображение сетку, нажав кнопку Перемещение сетки (Move Grid) — она включена по умолчанию. С ее помощью легко отслеживаются результаты коррекции. Также фильтр имеет инструменты Рука (Hand) и Масштаб (Zoom) для прокрутки и изменения масштаба изображения. Коррекцию можно выполнять двумя инструментами:

Регулировка хроматической аберрации, виньетирования и перспективы происходит на вкладке Заказная (Custom) с помощью соответствующих ползунков.

На рис. 14 приведен пример исправления бочкообразного искажения, полученного при съемке обложки книги с очень близкого расстояния.

Рис. 14. Примеры использования фильтра Коррекция дисторсии для исправления бочкообразного искажения: а — исходное изображение, б — результат коррекции

Исправление перспективы

Фильтр Исправление перспективы (Vanishing Point) используется для коррекции перспективных плоскостей на изображении, например боковых стен зданий, пола, крыши или любых других прямоугольных объектов. В этом фильтре следует построить плоскости, совпадающие с плоскостями изображения, а затем приступить к их редактированию: рисованию, клонированию, вставке из буфера обмена текстур или преобразованию. Все добавляемые на изображение элементы автоматически масштабируются и преобразуются в соответствии с построенными перспективными плоскостями, поэтому результат коррекции выглядит весьма реалистично.

Рис. 15. Примеры использования фильтра Исправление перспективы для нанесения текстуры и надписи на коробку: а — исходные изображения коробки и двух текстур, б — результат коррекции

На рис. 15 приведено исходное изображение коробки и результат нанесения текстуры на все грани параллелепипеда, в результате чего получен эффект обертки. Как видно из рисунка, текст поздравления также нанесен на коробку и сориентирован в соответствии с боковыми гранями.

Диалоговое окно фильтра открывается командой Фильтр (Filter) -> Исправление перспективы (Vanishing Point), в левой части которого располагаются инструменты фильтра. Рассмотрим инструменты, использованные для создания приведенного эффекта.

Инструмент Создать плоскость (Create Plane) создает плоскость по четырем угловым узлам. После задания четырех вершин становится активной перспективная плоскость, отображаются ограничивающая рамка и сетка, которые обычно обозначаются синим цветом (рис. 16а ).

Если при размещении угловых узлов возникают ошибки, то плоскость становится недопустимой и цвет линий ограничительной рамки и сетки меняется на желтый или красный. В этом случае узлы следует перемещать до тех пор, пока линии не станут синими. Также можно удалить неудачную плоскость клавишей Backspace (в Mac OS — Delete) и создать плоскость заново.

После создания плоскости становится активным инструмент Редактировать плоскость (Edit Plane), который позволяет отредактировать положение узлов, угол наклона плоскости. Положение узла изменяется простым перетаскиванием мыши, а для поворота плоскости применяется ползунок Угол (Angle) в параметрах инструмента Редактировать плоскость (Edit Plane) или клавиша Alt (в Mac OS — Option). Если навести указатель мыши на средний маркер ребра рамки с нажатой клавишей Alt (в Mac OS — Option), то указатель сменится на изогнутую стрелку. Перемещение мыши приведет к повороту плоскости.

Если вам необходимо создать новую плоскость, повторно выберите инструмент Создать плоскость (Create Plane) и определите четыре вершины будущей грани. Для создания связанных между собой плоскостей после создания первой плоскости (материнской) перетащите средний узел требуемого ребра рамки, удерживая нажатой клавишу Ctrl (в Mac OS — Command). В результате возникнет дочерняя плоскость (рис. 16б ). Если создаваемая плоскость уходит в сторону и не совпадает с гранью изображения, измените для нее угол наклона.

Примечание. Редактирование угловых узлов материнской и дочерней плоскостей невозможно!

После того как перспективные плоскости созданы и отредактированы их узлы, можно приступать к наложению текстуры. Поэтому необходимо на некоторое время выйти из окна фильтра, подтвердив все свои изменения кнопкой Ok. На рис. 16в представлены пять созданных плоскостей, которые в дальнейшем будут использоваться для нанесения текстуры.

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

Нужно скопировать в буфер обмена изображение текстуры, выделить пустой слой в палитре Слои (Layers) и открыть диалоговое окно фильтра Исправление перспективы (Vanishing Point), а затем выделить инструментом Область (Marquee) нужную плоскость и вставить из буфера обмена фрагмент. При перемещении указателя мыши текстура автоматически впишется в плоскость. После нанесения текстуры на каждую грань не забывайте выходить из диалогового окна фильтра с применением изменений, иначе все текстуры будут расположены на одном слое. На рис. 17 приведен результат нанесения текстур на грани коробки, а также палитра Слои (Layers).

Для расположения текста на боковой поверхности коробки необходимо создать текстовый слой в текущем или новом документе, скопировать его в буфер обмена, а затем вставить его в окне фильтра на предварительно выделенную плоскость.

Фильтр Пластика

Фильтр Пластика (Liquify) позволяет искажать отдельные области изображения: сдвигать, перемещать, поворачивать, отражать, делать вздутие и сморщивание пикселов. Он используется для создания шаржей, ретуши и коррекции фотографий, а также для выполнения художественных эффектов.

Диалоговое окно фильтра вызывается командой Фильтр (Filter) -> Пластика (Liquify). Все инструменты находятся в левой части окна, а их настройка производится в правой части.

На рис. 18 приведен пример использования фильтра Пластика (Liquify) для создания кукольного эффекта.

Увеличение глаз выполнено с помощью инструмента Вздутие (Bloat). Для обработки каждого глаза необходимо использовать довольно большую кисть, размер которой должен превышать размер глаза (рис. 19).

Скорость кисти лучше установить достаточно низкую — в примере использовалось значение 30. Следует выполнить несколько щелчков мышью в разных местах глаза, сохраняя при этом его округлую форму.

Для уменьшения рта применялись инструменты Сморщивание (Pucker) и Деформация (Forward). Сморщивание применено к уголкам рта, сделано несколько щелчков мыши в каждом из них. Чтобы еще больше сузить рот, необходимо передвинуть уголки рта навстречу друг другу инструментом Деформация (Forward) — рис. 20.

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

В завершение эффекта проведена обработка белков, зрачка и радужной оболочки глаз инструментами Затемнитель (Burn) и Осветлитель (Dodge), а также выполнена цветовая коррекция изображения в диалоговом окне Цветовой тон/Насыщенность (Hue/Saturation).

Помимо создания карикатур перечисленные инструменты часто используются для коррекции фотографий. Так, на рис. 21 приведен пример коррекции портрета мужчины.

Рис. 22. Процесс коррекции портрета инструментом Деформация: а — уменьшение мочки уха; б — подтягивание нижней губы

Инструментом Деформация (Forward) были обработаны следующие фрагменты:

  • мочки ушей — чтобы уменьшить их и прижать к голове (рис. 22а );
  • нижняя губа — для изменения ее формы (рис. 22б ).

Инструментом Сморщивание (Pucker) была проведена обработка других фрагментов:

Помимо коррекции фильтр Пластика может использоваться для создания различных художественных эффектов. На рис. 24 приведен результат обработки лепестков лилий инструментом Скручивание (Twirl). По умолчанию вращение производится по часовой стрелке, для вращения в обратном направлении нужно удерживать нажатой клавишу Alt (в Mac OS — Option). Тычинки и пестик обработаны инструментом Вздутие (Bloat).

Рис. 23. Процесс коррекции портрета инструментом Сморщивание: а — уменьшение родинки; б — уменьшение мешков под глазами, защищенная область обозначена красным цветом

Деформация текста

Для искривления текста применяется специальная функция, которая вызывается щелчком по кнопке Деформированный текст (Warp Text), расположенной на панели свойстав инструмента Горизонтальный текст (Horizontal Type). Удобство функции заключается в том, что она не растрирует текст, позволяя редактировать его после деформации. Более того, все настройки сохраняются и их можно изменять сколько угодно раз.

В настройках инструмента можно выбрать стиль искажения и установить величину эффекта по вертикали и горизонтали. Так, на рис. 25 для деформации текста использовался стиль Флагом (Flag).

Мы рассмотрели далеко не все инструменты Photoshop для выполнения разного рода деформаций. За кадром осталось множество инструментов группы 3D. Но и приведенные примеры показывают, что возможности Photoshop действительно очень разнообразны. 

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

Подробнее о материале

Перед тем как согнуть фанеру своими руками, необходимо ознакомиться с подобной продукцией более детально. Изделие представляет собой древесную плиту, полученную посредством склеивания фрагментов подготовленного шпона. Для улучшения прочностных качеств волокна располагают так, чтобы они были перпендикулярны друг другу.

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

Процесс размачивания элементов

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

Методика выдерживания плит в воде является более доступной и безопасной, поэтому ее предлагается рассмотреть подробно. Однако при проведении работ должна применяться качественная фанера. Плохие листы могут быстро расслоиться. Перед началом вымачивания желательно опустить небольшой кусок материала в емкость с водой. Если с ним ничего не случилось, то можно окунать цельные фрагменты.

Пошагово действия будут выглядеть так:

  1. Заготовка необходимых размеров помещается в воду на определенное время. Понять, что изделие готово к дальнейшим преобразованиям можно, проводя регулярный контроль. Плита станет податливой.
  2. Замачивание приостанавливается при достижении нужной гибкости. Сам лист перемещается в удобное место для работы.
  3. Заготовка изгибается и фиксируется при помощи винтов в определенном положении до полного высыхания.

В бытовых условиях рекомендуется комбинировать увлажнение с пропариванием. При таком варианте водой пропитывается лишь внешний слой. Паром обрабатывается место изгиба. Искривлять листы лучше всего вдоль древесных волокон, тогда удастся добиться максимального эффекта.

Осуществление частых надрезаний на изгибе

Если вопрос состоит в том, как согнуть толстую фанеру, то действенным способом будет создание многочисленных выемок в нужном месте. Для создания разрезов потребуется фреза. С ее помощью делаются специальные полосы в определенном участке древесной плиты.

При работах нельзя делать глубокие надрезы. Они должны доходить максимум до половины толщины листа. Слой шпона, расположенного с противоположной стороны, повреждать не допускается. Современные лодки часто изготавливаются из плит, округленных по такой технологии.

Итак, как согнуть фанеру, сделав в ней запилы, по шагам:

  1. Формируются частые разрезы в определенном месте.
  2. Заготовке придается нужная форма путем фиксации в необходимом положении.
  3. С использованием состава ПВА или эпоксидной смолы наклеивается плотный шпон.
  4. Примерно через 24 часа снимаются крепежи.

Запилы лучше всего располагать с внутренней стороны. При наклеивании шпона поверх них образуются пустоты. При неосторожной эксплуатации изготавливаемой конструкции могут появиться щели.

Методика склеивания тонких листов

Прежде чем согнуть лист фанеры большой толщины, следует рассмотреть вариант с использованием нескольких плит. Можно склеить между собой некоторое количество фрагментов, так как сгибать их по отдельности гораздо проще. Однако при использовании некачественного клея могут возникнуть проблемы с расслоением изделия уже на начальном этапе эксплуатации.

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

Конечная деталь оттирается от высохшего клея. С ее поверхности удаляются возможные дефекты. На последнем этапе осуществляется шлифовка.

Некоторые нюансы

Вышеприведенная информация дает понять, как согнуть фанеру разными способами. Для достижения наилучшего результата желательно ознакомиться с некоторыми тонкостями:

  • при размачивании допускается изгибать плиты только в состоянии повышенной температуры, иначе могут появиться трещины;
  • элементы, которым будет придаваться криволинейная форма, следует хранить в помещениях со стабильным уровнем влажности;
  • при дороговизне приобретенного материала можно воспользоваться услугами специализированных компаний.

Перед тем как согнуть фанеру 10 мм и больше, необходимо определиться с применяемым способом. Вариант должен выбираться в зависимости от угла излома. Что касается изделий меньшей толщины, то они искривляются только методом размачивания водой или паром.

Таблица расчета времени при увлажнении

Для определения количества минут, необходимых для размачивания материала при температурном режиме 95 градусов вдоль волокон, можно воспользоваться представленными данными.

Количество слоев

Толщина в миллиметрах

Время, мин.

Преимущества применения гнутой фанеры

Приведенные способы позволяют придать древесным плитам плавность форм. Арки, мебель и другие элементы декора в этом случае получаются эстетически привлекательными и механически стойкими. Криволинейные поверхности дают возможность:

  • сделать количество углов минимальным, благодаря чему риск получения травмы значительно сокращается;
  • придать интерьеру изысканность, ведь глазам более интересны именно плавные переходы;
  • уменьшить количество крепежных деталей.

Фанерные листы являются и в самом деле прекрасным материалом для проведения отделочных работ и производства мебели. Возможность создания изгибов открывает интересные возможности в дизайнерской сфере. При использовании гнутых форм получаются стильные изделия и конструкции.

О выборе метода

Зная о том, как согнуть фанеру тремя основными способами, каждый мастер должен определиться с одним из них. Каждый из вариантов не является универсальным, он актуален в той либо иной ситуации.

Даже процесс размачивания подходит не для всех случаев. С его помощью нельзя делать слишком сильные загибы, к тому же он занимает достаточно много времени, особенно если толщина материала достаточно высока.

Не является универсальным метод создания выемок для податливости листа. Для тонкой фанеры он не подходит. Обычно загиб делается, если толщина плиты составляет не менее 2 см. Что касается технологии склеивания, то она из всех перечисленных может считаться более универсальной. Однако ее применять для тонких листов не имеет смысла. Проще согнуть их сразу методом вымачивания.

Заключительная часть

Некоторые компании занимаются изготовлением изделий непосредственно по чертежам заказчика, поэтому при желании можно обратиться к ним, чтобы избежать лишних проблем. Они производят высокого качества с различными радиусами изгиба.

Я хотел бы сделать изогнутую экранную клавиатуру для Android. Я изучил экранную клавиатуру и другие другие экранные клавиатуры в коде Google. Ничего, что я нашел, связано с формой клавиатуры, которая представляет собой нечто иное, чем прямоугольник. В идеале я хотел бы создать клавиатуру, состоящую из клавиш, распределенных по двум полукругам на противоположных сторонах экрана (т. Е. Представьте, что вы держите планшет по сторонам и можете нажимать клавиши большими пальцами).

Из кода, который я рассмотрел, экранные клавиатуры создаются как виды (обычно расширяющие KeyboardView) и отображаются как непрерывная полоса в нижней части экрана. В качестве приближения к моей цели я попытался изменить код, который я нашел в коде google (dotdash-keyboard-), чтобы только нарисовать его ключи в нижнем левом углу и оставить прозрачный нижний правый угол. Я смог переопределить onMeasure, чтобы повлиять на размеры представления (см. Ниже), но это только, кажется, изменяет позиции клавиш, а не позиции контейнера. Другими словами, в нижней части экрана есть черный бар.

//Located within KeyboardView @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ this.setMeasuredDimension(200, 200); }

Это то, что я хочу сделать, даже возможно? Есть ли более правильный термин для этого? Существуют ли проекты, которые я могу использовать в качестве примеров?

Я также попытался установить размеры вида с помощью this.setLayoutParams – но эти вызовы, похоже, не имеют эффекта. Я также попытался использовать this.getParent для доступа к родительскому представлению (если он существует) и изменить его размеры, но этот подход не работает (или, я просто делаю это неправильно). Любая помощь приветствуется.

UPDATE: 12/21/2012 – Мне кажется, мне нужно переопределить метод onDraw родительского класса. Здесь, похоже, метод onDraw KeyboardView рисует на холсте, который равен размеру экрана, используя следующий код:

Final int width = Math.max(1, getWidth()); final int height = Math.max(1, getHeight()); mBuffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); mCanvas = new Canvas(mBuffer);

Я думаю, что могу переопределить onDraw и нарисовать все, что захочу на холсте.

UPDATE: 12/21/2012 – я переопределил onDraw, и теперь стало ясно, что View – это размеры, которые я устанавливаю для этого (200×200). Используя Hierarchyview, я вижу, что раскладка клавиатуры находится внутри рамки с идентификатором InputArea. Таким образом, горизонтальная полоса, заполняющая всю ширину, представляет собой этот кадр. Но я не создаю его – откуда он и как я могу изменить его размеры?

ОБНОВЛЕНИЕ: 12/22/2012 – после большего количества тестов кажется, что поведение (размеры) раскладки клавиатуры частично определяется действием, которое его вызывает. В браузере я получаю поведение, которое я описывал: высота окна браузера сокращается, чтобы разместить панель в нижней части экрана, которая удерживает клавиатуру, даже если ширина клавиатуры меньше ширины экран. В приложении календаря размер клавиатуры появляется, поскольку я установил его (как квадрат в нижнем левом углу), при этом календарь не изменился под ним. Таким образом, невозможно достичь моей цели в большинстве приложений, используя этот подход. Альтернативный подход может заключаться в том, чтобы служба IME создавала всплывающее окно или диалог. Одна из проблем заключается в том, что для всплывающих окон требуется родительское представление или привязка для присоединения, и я не думаю, что можно найти самый верхний вид из службы IME. Возможно, я могу создать прозрачный вид над текущей деятельностью и разместить всплывающее окно поверх этого?

ОБНОВЛЕНИЕ: 12/23/2012 – Прогресс. Я выяснил, как отображать всплывающее окно с клавиатуры IME. Следующий шаг – выяснить, как сделать всплывающие окна немного круглыми / органическими. Вот скриншот того, что я сделал, за которым следует источник.

Источник. Следующий метод относится к классу IME службы и вызывается методом onMeasure для дочернего (служебного) представления, так что всплывающие окна открываются одновременно с клавиатурой. Я установил размеры клавиатуры в 1×1, чтобы она не была видна. Операторы журнала помогут мне разобраться, как расположить всплывающие окна.

Public void initiatePopupWindow() { try { WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); DisplayMetrics dm = new DisplayMetrics(); display.getMetrics(dm); //display.getSize(p); Log.i("dotdashkeyboard","initiatePopupWindow (from IME service)"); LayoutInflater inflater = (LayoutInflater) this.getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layoutLeft = inflater.inflate(R.layout.popup_layout_left,null); View layoutRight = inflater.inflate(R.layout.popup_layout_right, null); // create a 300px width and 470px height PopupWindow int popupHeight = 300; int popupWidth = 200; if (popUpLeft == null) popUpLeft = new PopupWindow(layoutLeft, popupWidth, popupHeight, false); if (popUpRight == null) popUpRight = new PopupWindow(layoutRight, popupWidth, popupHeight, false); int ypos = 0; int xposRight = 0; if (display.getRotation() == Surface.ROTATION_0) { ypos = -(dm.heightPixels / 2 + popupHeight/2); xposRight = (dm.widthPixels - popupWidth); Log.i("dotdashkeyboard","test rotation=normal"); } else if (display.getRotation() == Surface.ROTATION_90) { ypos = -(dm.heightPixels / 2 + popupHeight/2)/2; xposRight = (dm.widthPixels - popupWidth)*2-popupWidth; Log.i("dotdashkeyboard","test rotation=90-degrees"); } else { Log.i("dotdashkeyboard","test rotation=unknown=" + display.getRotation()); } popUpLeft.showAtLocation(inputView, Gravity.NO_GRAVITY, 0, ypos); popUpRight.showAtLocation(inputView, Gravity.NO_GRAVITY, xposRight, ypos); Log.i("dotdashkeyboard","test created popup at ypos="+ypos + " xposRight=" + xposRight); Log.i("dotdashkeyboard","test screenWidth=" + dm.widthPixels + " screenHeight=" + dm.heightPixels); Button cancelButton = (Button) layoutLeft.findViewById(R.id.popup_cancel_button); //cancelButton.setOnClickListener(inputView.cancel_button_click_listener); cancelButton.setOnClickListener(cancel_button_click_listener); } catch (Exception e) { e.printStackTrace(); } }

Вы, кажется, на правильном пути здесь. Как вы отметили, большинство действий сократят их представления, чтобы предоставить пространство для окна клавиатуры, поэтому, если вы хотите, чтобы вызывающая активность заполняла экран, вам нужно использовать дополнительное окно, например PopupWindow. Вы можете установить размеры основного окна на 0x0.

Если возникла необходимость в создании изогнутого деревянного элемента, то скорее всего вы столкнетесь с рядом трудностей. Может показаться, что выпилить требуемый компонент в изогнутом виде будет проще, но в этом случае волокна древесины будут перерезаны и ослабят прочность детали. Помимо этого, при выполнении получается довольно большой перерасход материала.

Этапы выполнения работ по сгибанию доски в домашних условиях:

Подготовка. Выбор подходящего сорта дерева и ознакомление с общими принципами работы с ним.

Варианты сгибания древесины. Нагрев в паровой коробке, химическая пропитка, расслоение, пропил.

Древесина – это волокна целлюлозы, которые связаны между собой лигнином. Расположение волокон на прямую влияет на гибкость древесного материала.

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

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

Особенности работы с деревом

Гнутье деревянного материала сопровождается ее деформацией, растяжением внешних слоев и сжатием внутренних. Бывает так, что сила растяжения приводит к разрыву внешних волокон. Это можно предупредить, если провести предварительную гидротермическую обработку.

Можно согнуть заготовки бруса, выполненного из клееной древесины и массива. Помимо этого, для придания необходимой формы применяют лущеный и строганный шпон. Наиболее пластичными является лиственная порода. В число которой входят бук, береза, граб, ясень, клен, дуб, липа, тополь и ольха. Клееные гнутые заготовки лучше всего выполнить из шпона березы. Следует заметить, что в общем объеме таких заготовок около 60% припадает на березовый шпон.

Согласно технологии изготовления гнутой древесины, при пропаривании заготовки значительно увеличивается ее способность к сжатию, а именно на треть, тогда как возможность растяжения увеличивается всего на несколько процентов. Поэтому нельзя даже думать о том, чтобы согнуть дерево толще 2 см.

Как согнуть доску в домашних условиях: нагрев в паровой коробке

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

Это отверстие должно находиться в дне коробки. Помимо этого, в коробке необходимо предусмотреть съемную крышку, через которую можно будет изымать гнутую древесину, после того как она получит нужную форму. Для того чтобы удержать деревянную гнутую заготовку в требуемой форме, необходимо использовать специальные зажимы. Их можно выполнить самостоятельно из дерева или приобрести в строительном магазине.

Из дерева делаются несколько круглых обрезков. В них просверливаются отверстия, смещенные от центра. После чего следует просунуть болты сквозь них, а затем просверлить еще одно через стороны, дабы задвинуть их намертво. Подобные нехитрые поделки могут отлично выполнять функцию зажимов.

Теперь можно начинать пропарку дерева. Для этого необходимо закрыть деревянную заготовку в паровой коробке и позаботиться об источнике тепла. На каждые 2,5 см толщины изделия время, затрачиваемое на пропарку, составляет около часа. По его истечении, дерево следует изъять из коробки и придать ему требуемой формы путем загибания. Процесс должен осуществляться очень быстро, а само сгибание – мягко и аккуратно.

Совет: за счет разной степени эластичности одни виды древесины будут гнуться легче других. Разные способы нуждаются в приложении разной величины силы.

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

Как согнуть доску в домашних условиях при помощи химической пропитки

Так как за стойкость древесины отвечает лигнин, его связи с волокнами следует разрушить. Этого можно добиться химическим способом, причем выполнить это вполне возможно в домашних условиях. Лучше всего для подобных целей подходит аммиак. Заготовку отмачивают в 25% водном растворе аммиака, что в значительной мере увеличивает ее эластичность. Таким образом появится возможность согнуть, скрутить ее или выдавить под прессом какие-либо рельефные формы.

Совет: следует обратить внимание на то, что аммиак опасен! Поэтому в процессе работы с ним нужно строго додерживаться всех правил техники безопасности. Вымачивание древесины должно проводиться в глухо закрывающейся емкости, которая находится в хорошо проветриваемом помещении.

Чем дольше древесина будет вымачиваться в аммиачном растворе, тем пластичнее она станет в последствии. После отмачивания заготовки и формирования ее новой формы, следует оставить ее в подобном изогнутом виде. Это необходимо не только для фиксации формы, но и для испарения аммиака. Однако оставлять гнутое дерево нужно в проветриваемом помещении. Интересно, что когда аммиак испарился, волокна древесины обретут такую же прочность, как и раньше, что позволит заготовке удержать свою форму!

Как согнуть доску в домашних условиях: способ расслоения

Вначале необходимо выполнить заготовку древесины, которая будет в последствии подвержена изгибу. Крайне важно чтобы доски были немного длиннее, чем длина требуемой детали. Это объясняется тем, что изгиб укрощает ламели. Прежде чем начинать резку, понадобится нарисовать диагональную прямую карандашом. Это нужно сделать поперек нижней стороны заготовки, что даст возможность после перемещения ламелей сохранить их последовательность.

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

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

Также можно использовать эпоксидную смолу, но подобный состав обойдется очень дорого, и позволить его себе может далеко не каждый. Стандартный вариант клея для дерева в этом случае не подойдёт. Хоть он высохнет быстро, но является очень мягким, что в этом случае никак не приветствуется.

Изделие из гнутого дерева необходимо как можно скорее поместить в форму. Так, на ламель, промазанную клеем, укладывается еще одна. Процесс нужно повторять до тех пор, пока гнутая заготовка не получит нужную толщину. Доски крепятся вместе. После полного высыхания клея, следует укоротить ее до требуемой длины.

Как согнуть доску в домашних условиях: пропил

Подготовленный деревянный отрезок необходимо пропилить. Пропилы рассчитываются на 2/3 от толщины заготовки. Они должны располагаться с внутренней стороны изгиба. Нужно быть предельно внимательным, так как грубые пропилы могут непросто деформировать дерево, а полностью сломать.

Совет: ключ к успеху при резке заключается в том, чтобы между надрезами расстояние было максимально ровным. Идеальный вариант 1,25 см.

Надрезы выполняются поперек узора дерева. Затем необходимо сжать края заготовки, что позволит соединить получившиеся зазоры в одно целое. Подобную форму и получает изгиб по окончании работы. После этого его исправляют.

В большинстве случаев внешняя сторона обрабатывается шпоном, реже – ламинатом. Это действие дает возможность исправить изгиб и скрыть практически любые допущенные в процессе изготовления дефекты. Пробелы в согнутом дереве скрываются очень просто – для этого смешиваются опилки и клей, после чего смесью заполняются пробелы.

В независимости от варианта сгиба, после того как заготовка будет вынута из формы, изгиб немного расслабится. Ввиду этого его следует сделать чуть большим, дабы впоследствии компенсировать данный эффект. Метод пропиливания используется при сгибе металлического уголка или части коробки.

Итак, применяя подобные рекомендации можно без особенных проблем согнуть дерево своими руками.