Вышивка бисером по канве
итак, что нам стоит дом построить нужно?
во-первых, картинка, пригодная для вышивки крестиком, бисером
во-вторых, бисер, канва, иголка и нитка, коврик для бисера, пяльцы + кусочек ненужной дешевой тряпочки
бисер — пятнашка японская
канва — №18 аида
иголки — вот мне удобнее всего вышивать короткими иглами для бисера №11
теми, что не гнутся
нитки — идеальные нитки невидимые, инвизибл, оно же тончайшая, но крепкая мононить
это моя нитка

в-третьих, дабы не распечатывать схему, мне удобнее пользоваться планшетом,
на котором установлена программа-рисовалка
где можно увеличить, уменьшить схему, повернуть, отобразить картинку и прочее
это мой коврик и планшет с открытой схемкой
вернемся к пяльцам
почему пяльцы? зачем пяльцы?
ну мне так удобнее
так ровнее, ничто никуда не скатывается
бисер не наползает друг на друга
канва не перекашивается и т.д.
так вот пяльцы…
очень важен размер пяльцев
если вы держите их в руках, конечно
максимальный удобный размер 12-12,5 см
для того, чтобы, держа пяльцы в руке, снизу пальцами доставать до всех уголков вышиваемого участка
потому что нитку надо придерживать пальчиками
иначе есть большой риск запутывания нитки
итак, все приготовили, начинаем с… запяливания
на канве размечаем клетки 10Х10, сверяясь со схемкой
оставив припуски, вырезаем квадратик из канвы
берем тряпочку, бязь, например (для экономии канвы)
накладываем сверху квадратик с канвой и пришиваем насквозь по периметру квадратика к тряпочке
переворачиваем на изнанку и не забываем вырезать бязь внутри под канвой
теперь эту тряпочку можно запялить и обрезать лишнее вокруг, чтобы не мешало вышивать 

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

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

удобно на планшете отслеживать схемку — вышитое просто зачеркиваем
продолжаем вышивать 



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

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

Перевернуть элемент
Есть и хорошая новость. Вы можете настроить ориентацию каждого добавляемого на картинку элемента!
- Откройте редактируемый шаблон и выделите мышкой элемент, который вам интересен.
- Наверху появится кнопка «Перевернуть» , нажмите на неё. На этой же панели можно анимировать или обрезать элемент, настроить прозрачность или вставить гиперссылку в Canva.

- Выберите свой вариант: отразить по вертикали или отразить горизонтально. Готово!

Правильно поместить элемент смогли. Теперь попробуем разобраться, как в Канве изменить размер шаблона или листа.
Как?
Еще более интересный вопрос! Такая опция в графическом редакторе есть. Но воспользоваться ею можно с некоторыми оговорками.
Сначала расскажем о том, как изменить размер картинки в Канве, если у вас есть PRO-аккаунт.

Все верно, эта опция платная и пользоваться ей в базовой версии нельзя!
- Откройте лист, над которым сейчас работаете;
- наверху слева вы увидите иконку «Изменить» ;
- найдите блок «Настраиваемый…» и отметьте его галочкой;
- пропишите ширину и высоту, выберите единицу измерения (по умолчанию это пиксели);
- сохраните внесённые изменения.
Напомним, что платной версией можно воспользоваться бесплатно. У вас есть тридцать дней тестового периода!

А теперь подумаем о том, как изменить размер в Канве бесплатно! Жаль, но менять уже готовые шаблоны нельзя. Зато вы можете создать настраиваемый дизайн с нуля и самостоятельно выбрать длину, ширину и ориентацию (горизонтально, вертикально) шаблона. Для этого достаточно просто найти на главной кнопку «Настраиваемый размер» .

Вот и все, введите желаемые значения и приступайте к созданию шедевра! Вы убедились, что пользоваться программой нетрудно. В ней легко выполнить желаемые действия!
Как сделать график на Canvas
Canvas API— это интерфейс для отрисовки графики в браузере. С помощью HTML-элемента можно создавать холст (именно так canvas переводится с английского) и рисовать графику внутри него с помощью JavaScript-кода.
Используя Canvas, можно создавать игры, анимацию, графику, обрабатывать изображения и решать другие задачи. В этом туториале мы познакомимся с некоторыми базовыми возможностями Canvas и построим несложный график.

В реальной разработке для создания сложных графиков чаще всего используют специальные библиотеки. Например, Chart.js или подобные. Но они сами в большинстве случаев под капотом работают на Canvas, поэтому полезно понимать, как он устроен.
Научитесь создавать анимации
Приходите на наши курсы — изучите самые популярные и интересные техники для создания эффектов на CSS и JavaScript.
Шаг 1. Напишем разметку
Создание графика начнём, конечно, с разметки. Кроме самого элемента мы также сверстаем небольшую форму, которая будет принимать на вход значения. Так мы сможем динамически обновлять график с учётом введённых данных.
Популярность языков программирования %
На что здесь стоит обратить внимание:
- Вместо пути в атрибуте action мы оставили заглушку # . В теории нам может понадобится отправить на сервер данные, введённые пользователем, но пока такая задача не стоит.
- Для каждого поля ввода прописали атрибут name , в котором отражено его назначение. Например, в нашем случае значение javascript поможет нам использовать полученные данные при отрисовке графика.
- Так как значения в полях ввода должны задаваться в процентах, мы установили диапазон допустимых значений с помощью min и max .
- Элементу прописали размер 500×250 пикселей. По умолчанию он равен 300×150 пикселей.
- Внутри оставили информационное сообщение на случай, если браузер пользователя не поддерживает технологию.
Стилизация элементов будет максимально простой, поэтому не будем её разбирать в рамках туториала. Стили можно посмотреть в файле style.css в интерактивной демонстрации.
Шаг 2. Соберём данные для графика
Прежде чем рисовать график, нам нужно получить данные из формы. Для этого найдём все поля ввода в форме и создадим на основе введённых значений массив объектов с информацией о каждом элементе графика. В нашем случае это будут языки JavaScript, PHP и Python — три объекта.
const COLORS = [ `#b3d5fc`, `#98d9d9`, `#ede493` ]; const inputElements = document.querySelectorAll(`.chart__input`); const getData = (inputElements) => < return Array.from(inputElements).map((input, index) =>(< name: input.name, value: input.value, color: COLORS[index] >)); >; const items = getData(inputElements);
Функция getData() получает на вход коллекцию элементов, преобразует её в массив, а затем на основе каждого элемента создаёт объект с нужными для нашего графика данными: названием (язык программирования), значением (популярность в процентах) и цветом (его будем использовать для рисования столбца на графике).
Для задания цвета мы прибегли к самому примитивному способу — просто завели константу с нужным количеством цветов и присвоили каждому из объектов соответствующий по индексу цвет. В реальной разработке лучше получить цвет другим способом — например, сгенерировать в формате HEX с помощью JavaScript. Тогда получится избежать жёсткой привязки к количеству элементов.
Шаг 3. Подготовим холст
Начнём работу над созданием графика. Из элемента можно получить объект, который называется контекстом отрисовки. Объект содержит свойства и методы для рисования, именно с помощью него можно создавать весь контент внутри Canvas, а также манипулировать им. Для получения объекта контекста нужно воспользоваться методом getContext() :
const canvas = document.querySelector(`#canvas`); const ctx = canvas.getContext(`2d`);
В качестве параметра в метод getContext() мы передали значение 2d — это контекст отрисовки для работы с двумерной графикой. Именно его мы будем использовать, но есть и другие — например, webgl для трёхмерной графики.
Шаг 4. Нарисуем график
Свойства и методы контекста отрисовки
Для отрисовки чего-либо на Canvas нужно вызывать соответствующие методы контекста, а для управления параметрами отрисовки — задавать свойства. Мы рассмотрим те из них, которые понадобятся в туториале. Описание остальных можно найти на MDN.
- fillStyle — свойство определяет цвет заливки элементов. Например, текста или геометрической фигуры.
- font — свойство задаёт параметры шрифта. Синтаксис такой же, как у CSS-свойства font .
- fillText( text , x, y) — отрисовывает строку text , начиная с указанных координат. Координата x определяет расстояние от точки отсчёта по горизонтальной оси, а y — по вертикальной. Начало отсчёта холста расположено в левом верхнем углу.
- fillRect(x, y, width, height) — рисует прямоугольник с заливкой с указанными шириной и высотой, начиная с координат x и y .
- clearRect(x, y, width, height) — очищает прямоугольник, описанный параметрами. Можно использовать для очистки холста при перерисовке.
- translate(x, y) — перемещает начало координат холста на x по горизонтали и y по вертикали относительно начального положения.
- rotate(angle) — поворачивает систему координат по часовой стрелке на указанный угол. Значение задаётся в радианах.
- save() — сохраняет текущее состояние холста, в том числе заданные свойства (например, fillStyle и font ).
- restore() — применяет сохранённое ранее состояние холста.
Константы и перечисления
Этот пункт можно было бы пропустить и, если нам в коде понадобилось бы значение, например, ширины столбца графика, написать просто 50 . Такие числа в программировании называются «магическими» и считаются плохой практикой в реальной разработке. И для этого есть несколько веских причин. Например, если число нужно будет изменить, то это придётся делать в каждом фрагменте программы, где оно используется. А ещё часто из контекста может быть неясно, что это вообще за число. Эту проблему как раз решают константы с понятным названием. Мы будем привыкать сразу писать хороший код, поэтому вынесем все значения в константы. А если несколько констант относятся к одной сущности, объединим их в перечисления.
const MAX_PERCENTAGE = 100; const Gap = < HORIZONTAL: 100, VERTICAL: 30 >const BarCoordinate = < INITIAL_X: 80, INITIAL_Y: 220 >const BarSize = < MAX_HEIGHT: 190, WIDTH: 50 >; const LabelCoordinate = < INITIAL_X: 30, INITIAL_Y: 70 >const Font = < SIZE: `18px`, FAMILY: `Tahoma` >;
Здесь всё, что нам понадобится для рисования графика — начальные координаты элементов, размеры, отступы, параметры шрифта.
Сдвиг системы координат
При отрисовке графика мы будем использовать сочетание методов translate() и rotate() :
ctx.translate(0, canvas.height); ctx.rotate(-Math.PI/2);
Такая комбинация позволяет поменять систему координат по умолчанию, точка отсчёта которой расположена в верхнем левом углу. Код повернёт систему координат на 90 градусов против часовой стрелки и сдвинет вниз на высоту холста. Так она выглядит до и после:

График
Теперь нам нужно воспользоваться методами 2d контекста, которые мы разобрали выше, и нарисовать график на основе данных из формы.
// Получаем на вход items — массив объектов с данными const renderChart = (items) => < // Очищаем всю область холста ctx.clearRect(0, 0, canvas.width, canvas.height); // Задаём координаты для первого столбца и подписи let currentBarX = BarCoordinate.INITIAL_X; let currentLabelY = LabelCoordinate.INITIAL_Y; // Определяем горизонтальный отступ между соседними столбцами const gapBetweenBars = BarSize.WIDTH + Gap.HORIZONTAL; // Проходим в цикле по каждому объекту в массиве с данными // Для каждого будет нарисован отдельный столбец for (const item of items) < // Вычисляем высоту столбца с учётом процентов из данных const barHeight = (item.value * BarSize.MAX_HEIGHT) / MAX_PERCENTAGE; // Задаём цвет заливки любых элементов, которые будут создаваться дальше ctx.fillStyle = item.color; // Задаём параметры шрифта ctx.font = `$$`; // Запоминаем текущие параметры холста ctx.save(); // Сдвигаем начало коодинат вниз по оси y на величину canvas.height ctx.translate(0, canvas.height); // Поворачиваем систему координат на 90 градусов против часовой стрелки // Math.PI/2 — перевод 90 градусов в радианы ctx.rotate(-Math.PI/2); // В изменённой системе координат рисуем текст снизу вверх ctx.fillText(item.name.toUpperCase(), LabelCoordinate.INITIAL_X, currentLabelY); // Возвращаемся к изначальной системе координат ctx.restore(); // Рисуем столбец // Отрицательное значение — отрисовка снизу вверх ctx.fillRect(currentBarX, BarCoordinate.INITIAL_Y, BarSize.WIDTH, -barHeight); // Для следующего столбца обновляем координаты с учётом отступа currentBarX += gapBetweenBars; currentLabelY += gapBetweenBars; > >;
Вы заметили, что в самом начале мы очистили весь холст? Если этого не сделать, изображения будут накладываться друг на друга. В данном случае такой вариант не подходит, потому что мы хотим, чтобы при каждом клике на кнопку «Показать график» происходила перерисовка с учётом новых данных. Именно эту функциональность нам осталось запрограммировать.
Шаг 5. Реализуем отрисовку графика при отправке формы
У нас уже есть функция getData() , которая возвращает данные, и renderChart() , способная отрисовать график. Осталось только связать их вместе при клике на кнопку «Показать график».
Все поля ввода мы изначально сгруппировали в форму, поэтому будем отслеживать событие submit , которое произойдёт при отправке. А когда событие сработает, отрисуем график с учётом введённых данных.
const formElement = document.querySelector(`.chart__data`); formElement.addEventListener(`submit`, (evt) => < // Отменяем действие по умолчанию — отправку формы на сервер (которого нет) evt.preventDefault(); // Отрисовываем график renderChart(getData(inputElements)); // Сбрасываем значения полей ввода formElement.reset(); >);
Готово! Мы создали простой график на Canvas. Его можно доработать, например, добавив проверку на сумму введённых значений, которая по логике должна быть равна 100%, сейчас это правило можно нарушить. Поэкспериментировать с этим и другими улучшениями можно в нашей интерактивной демонстрации.
Полезности
- Canvas tutorial на MDN.
- HTML5 Canvas cheat sheet. Шпаргалка с основными свойствами и методами 2d контекста, разбитыми на категории.
- The HTML5 Canvas Handbook. Справочник по Canvas с примерами.
- 10 крутых примеров работы HTML5 Canvas. Не самые практичные, но иногда это и не главное.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Как сделать текст вертикальным в Canva

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

- Над редактором нажмите “Изменить размер” Размер дизайна будет “Пользовательский размер” по умолчанию.

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

- Скопируйте и измените размер изображение, нажав “Копировать & изменить размер.”

Еще один способ — коснуться текстового поля. Выполните следующие действия:
- Нажмите на текстовое поле, чтобы выделить его.

- Когда он выделен, он будет обведен пунктирной линией (рамкой). . Обратите внимание на стрелку в форме круга под пунктиром.

- Наведите указатель мыши на круглую стрелку, нажмите и удерживайте левую кнопку мыши.

- Перетащите текст, удерживая нажатой кнопку – вы должны увидеть, как он начинает вращаться пропорционально вашему движению.

Наконец, другой подход — повернуть текст вертикально вне Canva. Это может быть более сложным для некоторых пользователей, поскольку требует некоторого кодирования. Вот как:
Как правило, лучше всего использовать режим записи CSS. Свойство поворота фильтра BasicImage в Internet Explorer принимает одно из четырех значений: 0, 1, 2 или 3, которое поворачивает элемент на 0, 90, 180 или 270 градусов соответственно. Пример кода:
CanvasRenderingContext2D.prototype.fillVerticalText =
function(text, x, y, verticalSpacing)
this.fillText(text[i ], x, y + i * verticalSpacing);
Поворачивайте текст по своему усмотрению
Обычно люди думают об изображениях, а не о тексте, когда слышат слово “дизайн” Тем не менее, текст является важнейшим компонентом многих дизайнов.
Текст, похоже, не получает того признания, которого он заслуживает, возможно, потому, что он второстепенный или потому, что он находится ниже в списке приоритетов. . Однако легко понять, насколько важен текст в логотипе, шапке социальной сети или шапке блога, который вы хотите создать, если посмотреть на другие известные примеры.
Помимо великолепных графических функций, Canva, безусловно, обладает отличные возможности редактирования текста. Некоторые из них сложнее других, а некоторые доступны только в профессиональной версии. Тем не менее, доступные опции бесплатной версии по-прежнему работают!
