Линии графические картинки: D0 b3 d1 80 d0 b0 d1 84 d0 b8 d1 87 d0 b5 d1 81 d0 ba d0 b8 d0 b5 d0 bb d0 b8 d0 bd d0 b8 d0 b8 картинки, стоковые фото D0 b3 d1 80 d0 b0 d1 84 d0 b8 d1 87 d0 b5 d1 81 d0 ba d0 b8 d0 b5 d0 bb d0 b8 d0 bd d0 b8 d0 b8
%d0%bb%d0%b8%d0%bd%d0%b8%d1%8f %d0%b3%d1%80%d0%b0%d1%84%d0%b8%d0%ba%d0%b8 PNG, векторы, PSD и пнг для бесплатной загрузки
Мемфис дизайн геометрические фигуры узоры мода 80 90 х годов
4167*4167
поп арт 80 х патч стикер
3508*2480
естественный цвет bb крем цвета
1200*1200
80 основных форм силуэта
5000*5000
мемфис бесшовной схеме 80s 90 все стили
4167*4167
поп арт 80 х патч стикер
3508*2480
схема бд электронный компонент технологии принципиальная схема технологическая линия
2000*2000
дизайн плаката премьера фильма кино с белым вектором экрана ба
1200*1200
80 е брызги краски дизайн текста
1200*1200
Мемфис бесшовные модели 80 х 90 х стилей
4167*4167
80 летний юбилей дизайн шаблона векторные иллюстрации
4083*4083
поп арт 80 х патч стикер
2292*2293
аудиокассета изолированные вектор старая музыка ретро плеер ретро музыка аудиокассета 80 х пустой микс
5000*5000
рисованной радио 80 х
1200*1200
поп арт 80 х патч стикер
2292*2293
скейтборд в неоновых цветах 80 х
1200*1200
happy singing mai ba sing self indulgence happy singing
2000*2000
80 е в стиле ретро мода цвет градиент арт дизайн
1200*1200
Дизайн персонажей моды 80 х годов может быть коммерческими элементами
2000*2000
Персонаж из партии 80 х годов
1200*1200
скидки до 80 векторный дизайн шаблона иллюстрация
4083*4083
мемфис образца 80 s 90 стилей на белом фоневектор иллюстрация
4167*4167
две бутылки косметики жидкая основа белая бутылка крем bb
2000*2000
3d модель надувной подушки bb cream
2500*2500
ретро стиль 80 х годов диско дизайн неон плакат
5556*5556
Ретро мода неоновый эффект 80 х тема художественное слово
1200*1200
80 от большой распродажи постер
1200*1200
диско дизайн в стиле ретро 80 х неон
5556*5556
скачать букву т серебро 80 х
1200*1200
Мода стерео ретро эффект 80 х годов тема искусства слово
1200*1200
милая ретро девушка 80 х 90 х годов
800*800
поп арт 80 х патч стикер
3508*2480
bb крем ню макияж косметика косметика
1200*1500
80 х годов поп арт мультфильм банановая наклейка
8334*8334
Мода цвет 80 х годов ретро вечеринка слово искусства
1200*1200
Рождество 80 х годов ретро пиксель
9449*5315
Тенденция персонажа мультфильма 80 х годов
2000*2000
облака комиксов
5042*5042
Стиль ретро 80 х годов
1200*1200
Кассета для вечеринок в стиле ретро 80 х
1200*1200
Флаер музыкального мероприятия 80 х годов
1200*1200
Трехмерная ретро игра в стиле 80 х арт дизайн
1200*1200
Ретро ТВ игра 80 х годов в стиле арт дизайн
1200*1200
80 х годов ретро слово градиент цвета искусства
1200*1200
цвет перо на воздушной подушке bb крем трехмерный элемент
1200*1200
номер 80 3d рендеринг
2000*2000
Неоновый эффект 80 х годов Ретро вечеринка арт дизайн
1200*1200
Градиент ретро 80 х годов дискотека тема слово искусство
1200*1200
Скидка 80 процентов на 3d золото
3000*3000
80 основных форм гранж
1200*1200
§ 69.
Разрешение картинок § 69. Разрешение картинокАртемий Лебедев
16 июня 2001
Попробуем разобраться в одном из самых больших заблуждений человечества за всю историю существования экранной графики.
Дело в том, что у электронного изображения вообще нет разрешения. Разрешение (точнее, разрешающая способность) может быть только у приспособления ввода/вывода — монитора, принтера, сканера, фотоаппарата.
В науке разрешающую способность измеряют в количестве различимых параллельных линий или точек на миллиметр. Поэтому есть смысл измерять линии на миллиметр или точки на дюйм у монитора и принтера, а не у изображения.
Картинке в «Фотошопе» совершенно все равно, сколько ей задать точек на дюйм в форме изменения размера картинки. Этот параметр ни на что не повлияет при выводе изображения на экран. Потому что картинка состоит из такого-то количества пикселей в ширину на такое-то количество в высоту.
Многочисленные авторы учебников и книг по созданию сайтов либо советуют использовать 72 или 96 точек на дюйм, либо деликатно обходят вопрос стороной. Функция «сохранить для веба» в «Фотошопе» тупо сохраняет все картинки с разрешением 72 точки на дюйм. Обойти это можно, только пользуясь другими инструментами для сохранения файлов, но это все равно ничего не даст, так как разрешение, записанное в форматах ГИФ или джипег, проигнорируют и браузер, и монитор.
Загадочные 72 точки на дюйм идут с тех времен, когда имело смысл слово «визивиг». То есть 72 последовательных пикселя на экране Макинтоша печатались линией длиной в один дюйм на бумаге. Пиксель на заре настольно-издательских революций решили приравнять к типографскому пункту, который никогда не был равен 1⁄72 дюйма, но всегда был близок к этому значению (в разных странах причем по-разному).
WYSIWYG — what you see is what you get (что видишь [на экране], то и получишь [при печати] — англ. )
Это же соотношение лежит в основе языка «Постскрипт», под управлением которого работают большинство принтеров в мире, а также всех программ, произведенных компанией «Адобе». Разумеется, компьютеры победили, и сегодня в одном дюйме 72 пункта.
См. также: § 81. Жизнь и необычайные приключения типографского пункта
Если ГИФу установить разрешение в одну точку на дюйм, то ничего не произойдет. Сколько изображение занимало пикселей по высоте и ширине, столько и будет занимать. Если увеличивать значение разрешения, то некоторые программы будут пытаться соответственно уменьшать изображение при выводе на принтер, компенсируя по дороге несоответствие размера пикселя одной точке принтера.
Размер пикселя — это как размер ангела: точных данных ни у кого нет.
Для экрана же разрешение роли не играет. Браузер вообще не интерпретирует это значение (хотя у разных браузеров свое представление о том, что такое пиксель в миллиметрах на печати). «Фотошоп» использует разрешение по назначению только при печати — как логическое значение.
Заказать дизайн…
«Компьютерная графика. Виды компьютерной графики»
Объединение «Класс компьютерного обучения».
Тема: «Компьютерная графика. Виды компьютерной графики».
Педагог: Полковникова Анастасия Юрьевна.
Сегодня мы познакомимся с компьютерной графикой, ее видами, научимся различать вид графики и узнаем, какие графические редакторы используются в редактировании графических объектов.
Задание: изучить тему, ответить на вопросы в конце текста.
«Компьютерная графика. Виды компьютерной графики»
Сегодня мы познакомимся с компьютерной графикой, ее видами, научимся различать вид графики и узнаем, какие графические редакторы используются в редактировании графических объектов.
Компьютерная графика – это наука, предметом изучения которой является создание, хранение и обработка моделей и их изображений с помощью ЭВМ, т.е. это раздел информатики, который занимается проблемами получения различных изображений (рисунков, чертежей, мультипликации) на компьютере.
В компьютерной графике рассматриваются следующие задачи:
- представление изображения в компьютерной графике;
- подготовка изображения к визуализации;
- создание изображения;
- осуществление действий с изображением.
Под компьютерной графикой обычно понимают автоматизацию процессов подготовки, преобразования, хранения и воспроизведения графической информации с помощью компьютера. Под графической информацией понимаются модели объектов и их изображения.
Области применения компьютерной графики
Область применения компьютерной графики не ограничивается одними художественными эффектами. Во всех отраслях науки, техники, медицины, в коммерческой и управленческой деятельности используются построенные с помощью компьютера схемы, графики, диаграммы, предназначенные для наглядного отображения разнообразной информации. Можно рассмотреть следующие области применения компьютерной графики.
Деловая графика. Деловая графика – область компьютерной графики, предназначенная для наглядного представления различных показателей работы учреждений.
Конструкторская графика. Конструкторская графика используется в работе инженеров–конструкторов, архитекторов, изобретателей новой техники. Этот вид компьютерной графики является обязательным элементом САПР (систем автоматизации проектирования). Средствами конструкторской графики можно получать как плоские изображения (проекции, сечения), так и пространственные трехмерные изображения.
Иллюстративная графика. Иллюстративная графика – это произвольное рисование и черчение на экране компьютера. Пакеты иллюстративной графики относятся к прикладному программному обеспечению общего назначения. Простейшие программные средства иллюстративной графики называются графическими редакторами.
Художественная и рекламная графика. Художественная и рекламная графика – ставшая популярной во многом благодаря телевидению. С помощью компьютера создаются рекламные ролики, мультфильмы, компьютерные игры, видеоуроки, видеопрезентации. Графические пакеты для этих целей требуют больших ресурсов компьютера по быстродействию и памяти. Отличительной особенностью этих графических пакетов является возможность создания реалистических изображений и «движущихся картинок».
Компьютерная анимация. Компьютерная анимация – это получение движущихся изображений на экране дисплее. Художник создает на экране рисунке начального и конечного положения движущихся объектов, все промежуточные состояния рассчитывает и изображает компьютер, выполняя расчеты, опирающиеся на математическое описание данного вида движения. Полученные рисунки, выводимые последовательно на экран с определенной частотой, создают иллюзию движения. Мультимедиа – это объединение высококачественного изображения на экране компьютера со звуковым сопровождением. Наибольшее распространение системы мультимедиа получили в области обучения, рекламы, развлечений.
Графика для Интернета.
Во время лекции предстоит самостоятельно заполнить предложенную таблицу. Во время подведения итогов правильность заполнения таблицы будет проверена.
Виды компьютерной графики.
Различают четыре вида компьютерной графики. Это
Растровая графика. Компьютерное растровое изображение представляется в виде прямоугольной матрицы, каждая ячейка которой представлена цветной точкой. Основой растрового представления графики является пиксель (точка) с указанием ее цвета. Изображение представляется в виде большого количества точек – чем их больше, тем визуально качественнее изображение и больше размер файла. Растровые изображения напоминают лист клетчатой бумаги, на котором любая клетка закрашена либо черным, либо белым цветом, образуя в совокупности рисунок. Пиксель – основной элемент растровых изображений. Именно из таких элементов состоит растровое изображение, т.е. растровая графика описывает изображения с использованием цветных точек (пиксели), расположенных на сетке. При редактировании растровой графики редактируется пиксели, а не линии. Растровая графика зависит от разрешения, поскольку информация, описывающая изображение, прикреплена к сетке определенного размера.
Достоинства: Растровая графика эффективно представляет реальные образы. Растровые изображения могут быть очень легко распечатаны на таких принтерах, потому что компьютерам легко управлять устройством вывода для представления отдельных пикселов с помощью точек.
Недостатки: Большие объемы данных требуют высоких технических характеристик ПК. Память 128 мб и выше, высокопроизводительный процессор – для обработки, и большой винчестер для хранения. Невозможность увеличения для рассмотрения деталей (пикселизация).
Близкими аналогами являются живопись, фотография
Программы для работы с растровой графикой:
Paint, Adobe Photo Shop
Применение:
- для обработки изображений, требующей высокой точности передачи оттенков цветов и плавного перетекания полутонов.
Например, для:
- ретуширования, реставрирования фотографий;
- создания и обработки фотомонтажа, коллажей;
- применения к изображениям различных спецэффектов;
- после сканирования изображения получаются в растровом виде.
Векторная графика. Основной элемент изображения – линия.
Линия представлена в памяти ПК несколькими параметрами и в этом виде занимает гораздо меньше места, чем растровая линия состоящая из точек, для каждой из которых требуется ячейка памяти.
Линия – элементарный объект векторной графики. Любой сложный объект можно разложить на линии, прямые или кривые.
Свойства линии
- Форма
- Толщина
- Цвет
- Стиль (пунктир, сплошная)
Замкнутые линии имеют свойство заполнения – цветом, текстурой, узором и т.п. Каждая незамкнутая линия имеет 2 вершины, называемые узлами. С помощью узлов можно соединять линии между собой.
Векторная графика описывает изображения с использованием прямых и изогнутых линий, называемых векторами, а также параметров, описывающих цвета и расположение с помощью математических описаний объектов, окружностей и линий. Такая особенность векторной графики дает ей ряд преимуществ перед растровой графикой, но в тоже время является причиной ее недостатков. Векторную графику часто называют объектно – ориентированной графикой или чертежной графикой. Простые объекты, такие как окружности, линии, сферы, кубы и тому подобное называется примитивами, и используются при создании более сложных объектов
Достоинства векторной графики: малый объем, возможность масштабирования.
Недостатки. Векторное изображение, не содержащее растровых объектов, занимает относительно не большое место в памяти компьютера. Векторный формат становится невыгодным при передаче изображений с большим количеством оттенков или мелких деталей (например, фотографий из-за большого веса файла).
Программы для работы с векторной графикой:
Corel Draw, Adobe Illustrator, AutoCAD
Применение:
- для создания вывесок, этикеток, логотипов, эмблем и пр. символьных изображений;
- для построения чертежей, диаграмм, графиков, схем;
- для рисованных изображений с четкими контурами, не обладающих большим спектром оттенков цветов;
- для моделирования объектов изображения;
- для создания 3-х мерных изображений
Трехмерная графика. C точки зрения компьютера трехмерные объекты — это лишь пустотелые, не имеющие физической толщины оболочки. как от каждой их точки отражаются в направлении глаза наблюдателя воображаемые световые лучи, испускаемые заданными в составе сцены источниками света
Для создания реалистичной модели объекта используют геометрические примитивы (прямоугольник, куб, шар, конус и прочие) и гладкие поверхности. Вид поверхности при этом определяется расположенной в пространстве сеткой опорных точек
Достоинства: Большие возможности для поддержки технического черчения. С помощью графических редакторов трёхмерной компьютерной графики можно выполнять наглядные изображения деталей и изделий машиностроения, а также выполнять макетирование зданий и архитектурных объектов, изучаемых в соответствующем разделе архитектурно-строительного черчения. Наряду с этим может быть осуществлена графическая поддержка таких разделов начертательной геометрии, как перспектива, аксонометрические и ортогональные проекции, т.к. принципы построения изображений в трёхмерной компьютерной графике частично заимствованы из них. Для декоративно-прикладного искусства трёхмерная компьютерная графика предоставляет возможность макетирования будущих изделий с передачей фактуры и текстуры материалов, из которых эти изделия будут выполнены.
Недостатки:
- повышенные требования к аппаратной части компьютера, в частности к объему оперативной памяти, наличию свободного места на жестком диске и быстродействию процессора
- необходимость большой подготовительной работы но созданию моделей всех объектов сцены, которые могут попасть в поле зрения камеры
- необходимость контроля за взаимным положением объектов в составе сцены,
- особенно при выполнении анимации. В связи с тем, что объекты трехмерной графики «бестелесны», легко допустить ошибочное проникновение одного объекта в другой или ошибочное отсутствие нужного контакта между объектами
Программы для работы с трехмерной графикой:
3D Studio MAX 5, AutoCAD, Компас
Применение:
- научные расчеты,
- инженерное проектирование,
- компьютерное моделирование физических объектов
- изделия в машиностроении,
- видеороликах,
- архитектуре
Фрактальная графика Фрактальная графика – одна из быстроразвивающихся и перспективных видов компьютерной графики.
Фрактал – структура, состоящая из частей, подобных целому. Одним из основных свойств является самоподобие. (Фрактус – состоящий из фрагментов).
Фрактальная графика, как и векторная вычисляемая, но отличается тем, что никакие объекты в памяти не хранятся. Изображение строится по уравнению, или системе уравнений, поэтому ничего кроме формулы хранить не надо. Изменив коэффициенты можно получить совершенно другую картину.
Таким образом, мелкие объекты повторяют свойства всего объекта. Процесс наследования можно продолжать до бесконечности.
Полученный объект носит название – фрактальной фигуры.
Абстрактные композиции можно сравнить со снежинкой, с кристаллом.
Фрактальная графика основана на математических вычислениях. Базовым элементом фрактальной графики является сама математическая формула, то есть никаких объектов в памяти компьютера не хранится и изображение строится исключительно по уравнениям.
Фрактальными свойствами обладают многие объекты живой и неживой природы. (снежинка, ветка папоротника)
Способность фрактальной графики моделировать образы вычислительным путем часто используют для автоматической генерации необычных иллюстраций.
Программа для работы с фрактальной графикой:
Фрактальная вселенная 4.0 fracplanet
Применяют:
- Математики, Художники
Форматы графических файлов.
В настоящее время существует множество различных форматов хранения графической информации. Условно можно разделить все форматы на три группы
- графические метафайлы (метафайл обычно разрабатывается как составная часть какой либо графической системы, например *.wmf в Windows)
- растровые графические файлы
- векторные графические файлы
Вопросы:
- Перечислите все виды графики
- В чем преимущества растровой графики?
- В чем недостатки растровой графики?
- В чем преимущества векторной графики?
- В чем недостатки векторной графики?
- Основной элемент векторной графики…
- Как называется графика с представлением изображения в виде совокупности объектов
- Дать определение понятию «фрактал»…
- Какая графика используется при создании компьютерных игр?
- Назовите программы для работы с трехмерной графикой
#цтригосуворов #территориятворчества #лучшедома #оставайсядома #stayhome #дистанционноеобучение
Не удается найти страницу | Autodesk Knowledge Network
(* {{l10n_strings. REQUIRED_FIELD}})
{{l10n_strings.CREATE_NEW_COLLECTION}}*
{{l10n_strings.ADD_COLLECTION_DESCRIPTION}}
{{l10n_strings.COLLECTION_DESCRIPTION}} {{addToCollection.description.length}}/500 {{l10n_strings.TAGS}} {{$item}} {{l10n_strings.PRODUCTS}} {{l10n_strings.DRAG_TEXT}}{{l10n_strings.DRAG_TEXT_HELP}}
{{l10n_strings. LANGUAGE}} {{$select.selected.display}}{{article.content_lang.display}}
{{l10n_strings.AUTHOR}}{{l10n_strings.AUTHOR_TOOLTIP_TEXT}}
{{$select.selected.display}} {{l10n_strings.CREATE_AND_ADD_TO_COLLECTION_MODAL_BUTTON}} {{l10n_strings.CREATE_A_COLLECTION_ERROR}}Глава 5 Базовая графика | Визуализация и анализ географических данных на языке R
Данный модуль посвящен введению в работу с графическим представлением информации в R. 3\)):
Стандартные графики
Графики (точечные и линейные) – базовый и наиболее часто используемый способ визуализации. Универсальная функция plot()
позволяет строить графики по координатам \(X\) и \(Y\), которые передаются, соответственно, в первый и второй аргумент. Если переменные \(X\) и \(Y\) не связаны друг с другом явным образом, то такой график называется диаграммой рассеяния.
Диаграммы рассеяния
Диаграмма рассеяния позволяет установить, есть ли зависимость между переменными, а также понять, как объекты дифференцируются по значениям переменных.
par(mar=c(4,4,3,2))
# Диаграмма рассеяния по экспорту и импорту:
plot(sub$МетЭкспорт,
sub$МетИмпорт,
col="red",
xlab="Экспорт, млн. долл. США",
ylab = "Импорт, млн. долл. США",
main = "Экспорт/импорт металлов и изделий из них по субъектам РФ")
В данном случае четко выделяется группа субъектов вблизи начала координат, не отличающихся интенсивным экспортом и импортом продукции металлургии, а также очевидно преобладание экспорта над импортом при больших объемах товарооборота.
При построении диаграмм рассеяния важно сохранить одинаковый масштаб по осям \(X\) и \(Y\). Чтобы обеспечить это условие, необходимо использовать параметр asp = 1
:
plot(sub$МетЭкспорт,
sub$МетИмпорт,
col="red",
xlab="Экспорт, млн. долл. США",
ylab = "Импорт, млн. долл. США",
main = "Экспорт/импорт металлов и изделий из них по субъектам РФ",
asp = 1)
Попробуйте изменить размер окна на вкладке Plots. Вы увидите, что масштаб по осям сохраняется пропорциональным.
Размер и тип значка можно изменить, используя параметры pch =
и cex =
. Размеры масштабируются параметром cex
относительно условной единицы — стандартного размер значка. Сам значок можно выбрать, используя его код в соответствии с нижеприведенным рисунком (на самом деле, вы можете выбирать произвольные символы для визуализации точек):
Типы символов R
plot(sub$МетЭкспорт,
sub$МетИмпорт,
col="red",
xlab="Экспорт, млн. долл. США",
ylab = "Импорт, млн. долл. США",
main = "Экспорт/импорт металлов и изделий из них по субъектам РФ",
asp = 1,
pch = 2,
cex = 0.5)
plot(sub$МетЭкспорт,
sub$МетИмпорт,
col="red",
xlab="Экспорт, млн. долл. США",
ylab = "Импорт, млн. долл. США",
main = "Экспорт/импорт металлов и изделий из них по субъектам РФ",
asp = 1,
pch = 20,
cex = 1.2)
Линейные графики
Линейные графики отражают связь между зависимой и независимой переменной. Существует два способа нанесения линий на график: явное рисование линий поверх уже построенного графика с помощью функции lines()
, или создание нового линейного графика с помощью функции plot()
с дополнительным параметром type =
.
Для иллюстрации принципов работы первого способа откроем еще раз данные по объему сброса загрязненных сточных вод по морям России (млрд куб. м):
tab = read.csv2("data/oxr_vod.csv", encoding = 'UTF-8')
plot(tab$Год, tab$Каспийское, pch=20) # для начала нанесем точки
lines(tab$Год, tab$Каспийское) # теперь нанесем линии
По умолчанию функция plot()
рисует именно точки. Однако если точки не нужны, а достаточно только линий, или требуется иной подход к построению графиков, можно задать параметр type =
, который принимает следующие значения:
-
"p"
for points, -
"l"
for lines, -
"b"
for both, -
"c"
for the lines part alone of “b”, -
"o"
for both ‘overplotted’, -
"h"
for ‘histogram’ like (or ‘high-density’) vertical lines, -
"s"
for stair steps, -
"S"
for other steps, see ‘Details’ below, -
"n"
for no plotting.
Попробуем разные методы визуализации:
plot(tab$Год, tab$Карское,pch=20)
plot(tab$Год, tab$Каспийское, type="p")
plot(tab$Год, tab$Каспийское, type="l")
plot(tab$Год, tab$Каспийское, type="b")
plot(tab$Год, tab$Каспийское, type="c")
plot(tab$Год, tab$Каспийское, type="o")
plot(tab$Год, tab$Каспийское, type="h")
plot(tab$Год, tab$Каспийское, type="s")
Толщину и тип линии можно изменить, используя параметры lwd =
и lty =
соответственно. Работают они аналогично параметрам pch и cex для точечных символов. Типов линий по умолчанию в стандартной библиотеке R не так много, но в сочетании с цветовым кодированием и толщиной их оказывается вполне достаточно:
Попробуем разные варианты представления линий:
plot(tab$Год, tab$Каспийское, type="l", lwd = 2, lty = 1)
plot(tab$Год, tab$Каспийское, type="l", lwd = 3, lty = 2)
plot(tab$Год, tab$Каспийское, type="l", lwd = 1, lty = 3)
Совмещение графиков
Часто бывает необходимо совместить на одном графике несколько рядов данных. Для этого можно поступить двумя путями:
Нарисовать один ряд данных c помощью функции
plot()
, а затем добавить к нему другие ряды с помощью функцийpoints()
иlines()
.Нарисовать пустой график, а затем добавить к нему все ряды данных с помощью функций
points()
иlines()
.
При совмещении нескольких рядов данных на одном графике в первом же вызове функции
plot()
необходимо заложить диапазон значений по осям \(X\) и \(Y\), охватывающий все ряды данных. В противном случае будет учтен только разброс значений первого ряда данных, и остальные ряды могут не поместиться в поле графика.
Вариант №1 реализуется следующим образом:
plot(tab$Год,
tab$Каспийское,
pch=20,
type="o",
ylim = c(0,12),
col="red3")
# Добавим теперь на существующий график новый ряд данных, используя функции points() и lines():
points(tab$Год, tab$Карское, pch=20, col="forestgreen")
lines(tab$Год, tab$Карское, pch=20, col="forestgreen")
Обратите внимание на то, что если бы мы вызвали еще одну инструкцию
plot()
с новым рядом данных, это привело бы к построению нового графика, а не к добавлению его на существующий.
Теперь рассмотрим второй вариант. Заодно устраним недостаток предыдущего кода, в котором диапазон значений по оси \(Y\) указывался вручную.
xrange = range(tab$Год) # вычислим диапазон по оси X
yrange = range(tab$Каспийское, tab$Карское, tab$Азовское) # вычислим диапазон по оси Y
# Построим пустой график, охватывающий полный диапазон данных, и имеющий все необходимые сопроводительные элементы
plot(xrange,
yrange,
main="Объем сброса загрязненных сточных вод",
xlab="Год",
ylab="млрд.куб.м",
type = "n") # n означает, что ряд данных рисоваться не будет
# Теперь добавим на график ряды данных
points(tab$Год, tab$Каспийское, pch=20, col="red3")
lines(tab$Год, tab$Каспийское, pch=20, col="red3")
points(tab$Год, tab$Карское, pch=20, col="forestgreen")
lines(tab$Год, tab$Карское, pch=20, col="forestgreen")
points(tab$Год, tab$Азовское, pch=20, col="steelblue")
lines(tab$Год, tab$Азовское, pch=20, col="steelblue")
Функциональные параметры
Графические параметры при построении графиков на самом деле могут быть не константами, а функцией данных. Например, вы можете сказать, что размер точки при построении диаграммы рассеяния должен быть функцией отношения экспорта к импорту, что усилит наглядность отображения:
plot(okr$МетЭкспорт,
okr$МетИмпорт,
col=rgb(1,0,0,0.5),
xlab="Экспорт, млн. долл. США",
ylab = "Импорт, млн. долл. США",
main = "Экспорт/импорт металлов и изделий из них по ФО РФ (2013 г.)",
asp = 1,
pch = 20,
cex = 2+log(sub$МетИмпорт/sub$МетЭкспорт)) # размер кружка зависит от соотношения импорта и экспорта
Гистограммы
Гистограммы распределения строятся с помощью функции hist()
. Чтобы изменить ширину кармана (столбца) гистограммы, необходимо задать параметр breaks =
, а цвет задается в параметре col
:
hist(sub$ПродЭкспорт)
# Карманы будут от 0 до 3000 через 100. Заодно добавим цвет:
hist(sub$ПродЭкспорт, breaks = seq(0,3000,100), col="olivedrab3")
При построении гистограммы (как и любого другого типа графика) вы можете использовать не весь массив данных, а только его подмножество Например, можно посмотреть гистограмму только для субъектов с объемом экспорта менее 300:
hist(sub$ПродЭкспорт[sub$ПродЭкспорт < 300], col = "olivedrab3", breaks = seq(0, 300, 20))
Наконец, вы можете осуществить преобразование ряда данных перед построением гистограммы. Например, взять логарифм, чтобы проверить,похоже ли распределение на логнормальное:
hist(log(sub$ПродЭкспорт), col = "olivedrab3")
Столбчатые графики
Столбчатые графики — barplot — отображают вектор числовых данных в виде столбиков. Это простейший вид графика (наряду с dotchart), который используется для сравнения абсолютных величин. Для построения необходимо вызвать функцию barplot()
и передать ей столбец таблицы:
# Или даже просто вектор натуральных чисел от -5 до 5:
barplot(-5:5)
# Если у каждого столбика есть название,
# нужно передать вектор названий в аргумент names.arg =
barplot(okr$ХимЭкспорт, names.arg = okr$Регион)
# при наличии длинных подписей удобнее столбчатую диаграмму разместить горизонтально, используя параметр horiz = TRUE.
barplot(okr$ХимЭкспорт, names.arg = okr$Регион, horiz=TRUE)
Чтобы развернуть подписи перпендикулярно столбцам, следует использовать параметр las =
. Справка__R__говорит нам о том, что этот параметр дает следующее поведение подписей:
- 0: всегда параллельно осям (по умолчанию),
- 1: всегда горизонтально,
- 2: всегда перпендикулярно осям,
- 3: всегда вертикально.
Выберем вариант, при котором подписи всегда горизонтальны:
barplot(okr$ХимЭкспорт, names.arg = okr$Регион, horiz=TRUE, las = 1)
В данном случае очень массивные названия федеральных не умещаются в пространство графика. Можно было бы вполне убрать словосочетание “федеральный округ”. Для этого используем уже знакомую нам sub()
.
names = sub("федеральный округ", "", okr$Регион) # "" - означает пустая строка
barplot(okr$ХимЭкспорт, names.arg = names, horiz = TRUE, las = 1)
И снова содержимое не поместилось в поле графика. Проблема в том, что вокруг любого графика резервируются поля ограниченного размера для размещения подписей координат и т.д. Автоматически эти поля не пересчитываются, зарезервировать их — ваша задача.
Наберите в консоли ?par
. Откроется список всевозможных графических параметров, которые управляют компоновкой и порядком построения графиков. Эти параметры можно установить, вызвав функцию par()
. Все дальнейшие вызовы инструкций построения графиков будут учитывать установленные параметры Пролистайте страницу справки вниз и найдите параметр mar =
— он отвечает за установку полей в условных единицах. Есть также параметр mai =
, который позволяет установить поля графика в дюймах. Обратите внимание на то, что означают параметры этой функции:
# mar=c(bottom, left, top, right)
# The default is c(5, 4, 4, 2) + 0.1.
Поскольку в нашем примере проблемы возникают в левым полем, необходимо увеличить второй параметр.
margins.default = par("mar") # запишем текущее значение, чтобы восстановить его потом
par(mar = c(5, 10, 4, 2)) # увеличим поле left до 10 условных единиц
barplot(okr$ХимЭкспорт, names. arg = names, horiz=TRUE, las = 1)
Добавим заголовок с помощью параметра main =
, а подпись единиц измерения по оси \(X\) — с помощью параметра xlab =
. Поскольку количество параметров функции уже достаточно велико, введем каждый из них с новой строчки, чтобы улучшить читаемость кода:
barplot(okr$ХимЭкспорт,
names.arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz = TRUE,
las = 1)
# Чтобы увеличить диапазон оси X, можно использовать параметр xlim = c(min, max):
barplot(okr$ХимЭкспорт,
names.arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz = TRUE,
las = 1,
xlim = c(0,12000))
Работа с цветом на столбчатых диаграммах рассмотрена ниже в отдельном разделе.
Круговые (секторные) диаграммы
Круговые диаграммы (англ. piechart) строятся с помощью функции pie()
:
par(mar = c(5, 5, 5, 5)) # установим поля
pie(okr$ХимЭкспорт)
# вместо номеров можно использовать подписи секторов, добавив второй параметр:
pie(okr$ХимЭкспорт, names)
# в каждую метку можно добавить процент данного округа в общей массе. Для этого его нужно сначала посчитать:
percentage = 100 * okr$ХимЭкспорт / sum(okr$ХимЭкспорт)
# и округлить до 1 знака после запятой:
percentage = round(percentage, digits = 1)
Можно присоединить проценты к названиям округов, добавив обрамляющие скобки. Чтобы функция paste не добавляя пробелы между присоединяемыми строками, необходимо задать параметр sep = , передав ему пустую строку — ““:
names2=paste(names, " (", percentage, "%)", sep = "")
# Используем для аннотирования круговых секторов:
pie(okr$ХимЭкспорт, names2)
# Добавить заголовок можно также с помощью параметра main =
pie(okr$ХимЭкспорт, names2, main = "Доля федеральных округов в экспорте продукции химической промышленности")
Чтобы перенести часть заголовка на вторую строку, вы можете использовать управляющий символ перевода строки \n
, вставив его в требуемое место:
pie(okr$ХимЭкспорт, names2, main = "Доля федеральных округов в экспорте \n продукции химической промышленности")
Управляющие символы играют большое значение в программировании и используются для управления поведением текстового вывода. Нотация
\n
называется escape-последовательностью. Помимо перевода строки, есть и другие полезные управляющие символы. Кстати, именно из-за того, что escape-последовательности начинаются с обратной косой черты (\
), при указании системных путей в функцииsetwd()
всегда следует использовать прямую косую черту (/
). Например, следующий путь не будет найдет, поскольку он содержит управляющие последовательности\n
и\t
:C:\data\tables\new
.
Наконец, при использовании секторных диаграмм важно уметь менять порядок секторов. По умолчанию сектора откладываются против часовой стрелки начиная с восточного направления. Чтобы сектора откладывались по часовой стрелке с северного направления, следует задать параметр clockwise = TRUE
.
pie(okr$ХимЭкспорт,
names2,
main = "Доля федеральных округов в экспорте \n продукции химической промышленности",
clockwise = TRUE)
Работа с цветом на круговых диаграммах рассмотрена ниже в отдельном разделе.
Цвет и прозрачность
Цвет — одно из основных графических средств, используемых на графиках и диаграммах, поэтому данная тема рассмотрена более подробно в отдельном разделе. Определить цвет можно различными способами. Во-первых, в R есть палитра предопределенных цветов, которые можно выбирать по их названию).
Список названий цветов можно посмотреть, вызвав функцию colors()
:
head(colors())
## [1] "white" "aliceblue" "antiquewhite" "antiquewhite1"
## [5] "antiquewhite2" "antiquewhite3"
Основной цвет любого графика или диаграмма задается параметром col =
. Это цвет (или цвета) с помощью которых будут отображаться данные. Попробуем изменить цвет графика с серого на пастельно-синий:
par(mar = c(5, 10, 4, 2)) # увеличим поле left до 10 условных единиц
barplot(okr$ХимЭкспорт,
names.arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz = TRUE,
las = 1,
xlim = c(0,12000),
col = "steelblue")
Помимо этого вы можете задать цвет с помощью цветовых компонент в различных пространствах. Для этого вы должны быть знакомы с основами теории цвета (посмотрите презентацию UsingColorInR.pdf. Например, фиолетовый цвет в пространстве RGB можно задать с помощью функции rgb()
, смешав синюю и красную компоненты:
violet = rgb(0.4, 0, 0.6)
barplot(okr$ХимЭкспорт,
names.arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz = TRUE,
las = 1,
xlim = c(0,12000),
col = violet)
Чтобы сделать цвет полупрозрачным, есть две возможности:
- При создании нового цвета — передать в функцию
rgb()
дополнительный параметрalpha =
, который задает долю прозрачности в диапазоне от 0 до 1. - При модификации существующего цвета — вызвать функцию
adjustcolor()
с параметромalpha =
Например:
violet. transp = adjustcolor(violet, alpha = 0.5)
barplot(okr$ХимЭкспорт,
names.arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz = TRUE,
las = 1,
xlim = c(0,12000),
col = violet.transp)
green.transp = rgb(0, 1, 0, 0.5) # появился четвертый параметр
barplot(okr$ХимЭкспорт,
names.arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz = TRUE,
las = 1,
xlim = c(0,12000),
col = green.transp)
Функция
adjustcolor()
позволяет модифицировать все компоненты цвета, не только прозрачность.
На графике типа barplot вы имеете фактически несколько переменных, которые представлены столбиками. А это означает что для них можно использовать различные цвета. Вы можете передать в параметр col =
вектор из цветов, соответствующих столбикам:
colors = c("red", "green", "blue", "orange", "yellow", "pink", "white","black")
barplot(okr$ХимЭкспорт,
names. arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz = TRUE,
las = 1,
xlim = c(0,12000),
col = colors)
На самом деле, такой винегрет из цветов на столбчатых диаграммах использовать не принято. Но вы должны понимать, что при необходимости можно поменять цвет отдельно выбранных столбиков. Например, мы можем показать красным цветом Центральный и Приволжский округа, которые являются лидерами по экспорту продукции химической промышленности:
colors = rep("gray", 8) # сделаем 8 серых цветов
colors[2] = "red"
colors[7] = "red"
barplot(okr$ХимЭкспорт,
names.arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz = TRUE,
las = 1,
xlim = c(0,12000),
col = colors)
Еще одна интересная особенность использования цвета заключается в том, что количество указанных цветом может не совпадать с количеством рядов данных. Вы можете указать 2 или 3 цвета, и они будут циклически повторяться при визуализации данных:
colors=c("gray","steelblue")
barplot(okr$ХимЭкспорт,
names.arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz =TRUE,
las = 1,
xlim = c(0, 12000),
col = colors)
Наконец, вещь, которой совершенно необходимо уметь пользоваться при работе с цветом в R — это цветовые палитры. Палитры чрезвычайно удобны, когда необходимо сгенерировать множество цветов, зная лишь основные оттенки. Для этого нужно создать палитру, используя функцию colorRampPalette()
:
# задаем 2 опорных цвета: черный белый
palet=colorRampPalette(c("black","white"))
# и автоматически генерируем 8 цветов между ними:
colors=palet(8)
# используем их для отображения:
barplot(okr$ХимЭкспорт,
names.arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz = TRUE,
las = 1,
xlim = c(0, 12000),
col= colors)
# вы можете включить в палитру произвольное количество цветов:
palet=colorRampPalette(c("steelblue","white","purple4"))
colors=palet(8)
barplot(okr$ХимЭкспорт,
names.arg = names,
main = "Экспорт продукции химической промышленности",
xlab = "млн долл. США",
horiz=TRUE,
las = 1,
xlim = c(0, 12000),
col= colors)
В R существует множество стандартных палитр, их список можно найти в справке и документации. Наиболее полезные из них:
Например, вы можете изменить цвета диаграммы, взяв их из одной из палитр или выбрав случайным образом из полной палитры цветов, используя функцию sample()
:
pie(okr$ХимЭкспорт, names2, main = "Доля федеральных округов в экспорте \n продукции химической промышленности", col=rainbow(length(names2)))
pie(okr$ХимЭкспорт, names2, main = "Доля федеральных округов в экспорте \n продукции химической промышленности", col=sample(colors(),5))
Более богатый набор палитр можно найти в библиотеке RColorBrewer
, которая представляет собой интерпретацию палитр, доступных на сайте colorbrewer2. org
library(RColorBrewer) # Откроем библиотеку RColorBrewer:
display.brewer.all() # Посмотрим, какие в ней имеются палитры
К каждой из этих палитр можно обратиться по названию с помощью функции brewer.pal()
. Поскольку нам необходимы цвета для категориальных данных, следует использовать палитры из средней части (Set3 — Accent)
# выберем цвета из палитры Set2 по количеству секторов в круге:
colors = brewer.pal(length(names2),"Set1")
# И используем их при визуализации
par(mar = c(5, 5, 5, 5)) # установим поля
pie(okr$ХимЭкспорт, names2, main = "Доля федеральных округов в экспорте \n продукции химической промышленности", col=colors)
# Попробуем палитру Accent:
pie(okr$ХимЭкспорт, names2, main = "Доля федеральных округов в экспорте \n продукции химической промышленности", col=brewer.pal(length(names2),"Accent"))
Настройки отображения
Графические параметры
Изменять размеры элементов графика можно независимо друг от друга, используя следующие параметры:
-
cex
— общий масштаб элементов на графике -
cex. axis
— масштаб подписей координат на оси -
cex.lab
— масштаб подписей названий осей -
cex.main
— масштаб заголовка графика -
cex.sub
— масштаб подзаголовка графика -
cex.names
— масштаб подписей факторов (для некоторых типов диаграмм)
Например:
plot(tab$Год,
tab$Каспийское,
pch=20,
type="o",
ylim = c(0,12),
col="red3",
main="Объем сброса загрязненных сточных вод",
xlab="Год",
ylab="млрд.куб.м",
cex.axis=0.8,
cex.lab=0.7,
cex.main=0.9,
cex = 0.8)
points(tab$Год, tab$Карское, pch=20, col="forestgreen",cex = 0.8)
lines(tab$Год, tab$Карское, pch=20, col="forestgreen")
points(tab$Год, tab$Азовское, pch=20, col="steelblue",cex = 0.8)
lines(tab$Год, tab$Азовское, pch=20, col="steelblue")
Аналогично происходит тонкая настройка цвета:
-
col
цвет графика -
col. axis
цвет подписей координат -
col.lab
цвет названий осей -
col.main
цвет заголовка -
col.sub
цвет подзаголовка -
fg
цвет элементов переднего плана (оси, рамка и т.д.) -
bg
цвет фона графика (background)
plot(tab$Год,
tab$Каспийское,
pch=20,
type="o",
ylim = c(0,12),
col="red3",
main="Объем сброса загрязненных сточных вод",
xlab="Год",
ylab="млрд.куб.м",
cex.axis=0.8,
cex.lab=0.7,
cex.main=0.9,
col.lab = "grey50",
fg = "grey40")
points(tab$Год, tab$Карское, pch=20, col="forestgreen")
lines(tab$Год, tab$Карское, pch=20, col="forestgreen")
points(tab$Год, tab$Азовское, pch=20, col="steelblue")
lines(tab$Год, tab$Азовское, pch=20, col="steelblue")
Разметка осей, рамка, сетка координат и произвольные линии
По умолчанию R подбирает оптимальный с точки зрения него шаг разметки осей, в зависимости от разброса значений по осям \(X\) и \(Y\), а также размеров графического устройства, на котором производится рисование. Изменяя размер окна прорисовки, вы получите различную разметку осей.
В то же время, часто возникает желание (или необходимость) самостоятельно управлять шагом разметки сетки. Для этого необходимо:
- Вызвать функцию
plot()
, передав ей дополнительно параметрaxes = FALSE
(убирает при рисовании обе оси) или один из параметровxaxt="n"
/yaxt="n"
(убирают оси \(X\) и \(Y\) соответственно) - Вызвать столько раз функцию
axis()
, сколько вы хотите нарисовать осей, передав ей параметры для рисования каждой оси.
Функция axis()
принимает следующие параметры:
-
side
— сторона графика, на которой будет нарисована ось (1=bottom
,2=left
,3=top
,4=right
) -
at
— вектор значений, в которых должны быть нарисованы метки оси -
labels
— вектор подписей, которые будут нарисованы в местоположениях, указанных в параметреat
. Этот параметр можно пропустить, если подписи совпадают с местоположениями меток -
pos
— координата, вдоль которой будет нарисована ось -
lty
— тип линии -
col
— цвет линии и меток -
las
— расположение подписей параллельно (\(0\)) или перпендикулярно (\(2\)) оси -
tck
— длина метки относительно размера графика. Отрицательные значения дают метки, выходящие за пределы графика. положительные — внутрь графика. \(0\) убирает метки, \(1\) рисует линии сетки.
При ручном построении осей полезно сразу же нарисовать рамку вокруг графика, используя функцию box()
.
Например:
plot(tab$Год,
tab$Каспийское,
type = "l",
axes = FALSE)
axis(side = 1,
at = seq(min(tab$Год), max(tab$Год), 1),
tck = -0.02,
labels = FALSE) # разметим ось X через 1 год, но рисовать подписи не будем
axis(side = 1,
at = seq(min(tab$Год), max(tab$Год), 3), # а подписи расставим через 3 года
tck = 0) # но рисовать метки не будем
# разметим ось Y через 1 млрд куб. м., округлив предварительно минимальное и максимальное значение до ближайшего целого снизу и сверху соответственно
axis(side = 2,
at = seq(floor(min(tab$Каспийское)), ceiling(max(tab$Каспийское)), 1),
tck = -0.02)
box() # добавим рамку для красоты
Для размещения сетки координат существует функция grid(nx = NULL, ny = nx, col = "lightgray", lty = "dotted", lwd = par("lwd"), equilogs = TRUE)
. Как видно из набора ее параметров, сетка определяется количеством линий в горизонтальном и вертикальном направлении. Это не всегда бывает удобно, поскольку как правило мы хотим задать шаг сетки конкретной величины. По умолчанию, однако, линии сетки выбираются автоматически, как и метки:
plot(tab$Год,
tab$Каспийское,
type = "l",
col = "red")
grid()
Вы, разумеется, можете поменять их количество, однако R не будет за вас согласовывать шаг сетки и шаг меток осей, поскольку метки генерируются на стадии рисования plot()
или axis()
и не запоминаются.
plot(tab$Год,
tab$Каспийское,
type = "l",
col = "red")
grid(10, 5)
Функция grid()
на самом деле является оберткой функции abline()
, которая позволяет рисовать произвольные линии на графике. Дана функция предоставляет следующие возможности построения линий и серий линий:
-
a, b
— коэффициенты уравнения \(y = ax + b\). Таким образом можно определить только одну линию. -
coef
— принимает вектор из двух значений, которые интерпретируются какa
иb
. То есть, это альтернативная форма записи предыдущего случая. -
h
— значение (значения) координат \(y\) для горизонтальной линии (серии горизонтальных линий). То есть, вы можете передать в этот параметр как одиночное значение, так и вектор значений. В зависимости это этого нарисуется одна горизонтальная линия или серия горизонтальных линий. -
v
— значение (значения) координат \(x\) для вертикальной линии (серии вертикальных линий). 3\) по оси \(Y\). Для этого выполним следующую последовательность действий:plot(tab$Год, tab$Каспийское, type="n") # режим 'n' позволяет ничего не рисовать, но заложить поле графика в соответствии с данными, указанными в параметрах x и y # Вычисляем линии сетки xlines = seq(min(tab$Год), max(tab$Год), 1) ylines = seq(ceiling(min(tab$Каспийское)), floor(max(tab$Каспийское)), 1) # Рисуем линии сетки abline(h = ylines, v = xlines, col = "lightgray") # Рисуем график lines(tab$Год, tab$Каспийское, col="red3") points(tab$Год, tab$Каспийское, pch = 20, col="red3") # Выделяем значение 10 по оси Y: abline(h = 10, col = "blue", lwd = 2) # Рисуем дополнительно рамку, т.к. сетку координат мы рисовали после графика box()
Аннотации данных (текст на графике)
Аннотации данных добавляются на график с помощью функции
text()
. В качестве трех обязательных аргументов ей необходимо передать координаты точек размещения текста, и вектор подписей. Также полезным будет указать параметрpos=
, отвечающий за размещение аннотации относительно точки. Значенияpos
, равные 1, 2, 3 и 4, соответствуют размещению снизу, слева, сверху и справа от точки:text(tab$Год, tab$Каспийское, labels = tab$Каспийское, cex = 0.75, pos = 3)
К сожалению, стандартный механизм размещения аннотаций пакета
graphics
не обладает возможностью устранения конфликтов подписей. Однако это возможно для графиков, построенных с помощью библиотек lattice и ggplot2. Для этого можно воспользоваться пакетом directlabels или ggrepel.Легенда
Легенда к графику размещается с помощью функции
legend()
. Эта функция принимает несколько аргументов, включая: местоположение, заголовок, названия элементов, графические параметры. Местоположение может быть задано координатами \((x,y)\) в системе координат графика, но удобнее пользоваться следующими предопределенными константами:"bottomright"
,"bottom"
,"bottomleft"
,"left"
,"topleft"
,"top"
,"topright"
,"right"
,"center"
.Чтобы в легенде появились точки, необходимо задать параметр
pch=
. Для линейной легенды, следует задать, соответственно, параметрlty =
и/илиlwd =
. Каждый из этих параметров должен быть вектором по количеству элементов легенды:par(mar = margins.default) # Найдем ограничивающий прямоугольник вокруг всех рядов данных xrange = range(tab$Год) yrange = range(tab$Каспийское, tab$Карское, tab$Азовское) # Построим пустой график с разметкой осей и всеми заголовками plot(xrange, yrange, type="n", main="Объем сброса загрязненных сточных вод", xlab="Год", ylab="млрд.куб.м", cex.axis=0.8, cex.lab=0.7, cex.main=0.9, col.lab = "grey50", fg = "grey40") # Добавим на график сетку координат grid() # Добавим на график данные points(tab$Год, tab$Каспийское, pch=20, col="red3") lines(tab$Год, tab$Каспийское, pch=20, col="red3") points(tab$Год, tab$Карское, pch=20, col="forestgreen") lines(tab$Год, tab$Карское, pch=20, col="forestgreen") points(tab$Год, tab$Азовское, pch=20, col="steelblue") lines(tab$Год, tab$Азовское, pch=20, col="steelblue") # Определим положение, названия и цвета: main = "Море" location = "topright" labels = c("Каспийское", "Карское", "Азовское") colors = c("red3", "forestgreen", "steelblue") # Если цвет передать в параметр fill, то по умолчанию # нарисуются цветовые плашки: legend(location, labels, title = main, fill=colors)
pts = c(20, 20, 20) # каждый элемент показывается точкой типа 20 lns = c(1, 1, 1) # каждый элемент показывается линией толщиной 1 # теперь посмотрим на легенду (она нарисуется поверх старой) legend(location, labels, title = main, col = colors, pch = pts, lwd = lns)
Более подробно с разнообразными опциями размещения легенды на графике вы можете познакомиться, набрав в консоли команду
?legend
.Урок 2. рисунок — основа изобразительного творчества. ритм линий и пятен, их выразительные возможности — Изобразительное искусство — 6 класс
«Изобразительное искусство»
«6» класс
Урок № 02. Рисунок – основа изобразительного творчества. Ритм линий и пятен, их выразительные возможности
Перечень вопросов, рассматриваемых в теме:
Какие выделяют виды рисунка по их целям и художественным задачам?
Как рисовать с натуры и размещать рисунок на листе?
Как передать разное эмоциональное состояние, различное настроение с помощью ритма и характера линий?
Как создавать изображения с помощью пятна и тональных отношений?
Глоссарий по теме:
Набросок – это рисунок, сделанный очень быстро. В наброске художник стремится изобразить основную пластическую мысль, увиденную в натуре.
Зарисовка – это более долгий, изучающий рисунок.
Линия обозначает контур предмета, его край, но в жизни этой черты нет.
Ритм – это чередование соизмеримых между собой элементов.
Пятно – основное средство изображения на плоскости. Тональные отношения улавливают переходы света и тени от самого тёмного по ступенькам серого к самому светлому.
Основная и дополнительная литература по теме урока:
1. Неменская Л. А. Изобразительное искусство. Искусство в жизни человека. 6 класс: учеб. для общеобразоват. организаций / Л. А. Неменская; под ред. Б. М. Неменского. – 10-е изд. перераб. и доп. – М.: Просвещение, 2019. – 191 с.: ил. – ISBN 978-5-09-071640-6
Открытые электронные ресурсы по теме урока:
1. Пора перемен. Графика 1860-х годов из собрания Третьяковской галереи [Электронный ресурс]. – Режим доступа: https://www.tretyakovgallery.ru/exhibitions/pora-peremen-risunok-serediny-xix-veka/ (дата обращения: 06.08.19).
2. Графика. Государственный музей изобразительных искусств им. А. С. Пушкина [Электронный ресурс]. – Режим доступа: https://www.pushkinmuseum. art/exposition_collection/collections/graphics/index.php?lang=ru/ (дата обращения: 06.08.19).
Теоретический материал для самостоятельного изучения
Основой изобразительного творчества считается рисунок. Рисунок выполняется графическими материалами – чаще всего карандашом или углём, он может быть сделан пером, ручкой или кистью. Все художественные рисунки – это графические произведения. Существует много графических техник, а главное – целей, для которых создаются рисунки.
Существуют разные виды рисунка:
Набросок – это рисунок, сделанный очень быстро. В наброске художник стремится изобразить основную пластическую мысль, увиденную в натуре. Это выразительная графическая запись своего впечатления или идея будущей работы, её проект, эскиз.
В. И. Суриков. БОЯРЫНЯ МОРОЗОВА. Эскиз композиции. Карандаш. XIX в.
Рисунок может быть и более долгим, изучающим. Тогда его называют зарисовкой. Чаще всего такими бывают вспомогательные рисунки. Они необходимы в работе художника: это зарисовки разных деталей для будущей картины или будущего проекта.
Леонардо да Винчи. ЭСКИЗ РУК. Тушь. XV в.
Чтобы объяснить, как устроена машина или какая-нибудь постройка, делают технический рисунок. Существует учебный рисунок,. его цель – освоение правил изображения, грамоты изобразительного языка, поэтому учебные рисунки, сделанные разными людьми, бывают похожи. Но рисунок может быть и настоящим произведением искусства.
Учебный рисунок
Творческий рисунок всегда особенный, в нём автор стремится выразить то, что ему кажется интересным.
Рафаэль Санти. МАТЬ И ДИТЯ. XVI в.
Большой потенциал творческого рисунка раскрыли мастера Высокого Возрождения (Рафаэль, Микеланджело, Леонардо да Винчи). Излюбленными инструментами художников были мягкие грифели — итальянский карандаш, уголь, сангина, позволяющие отмечать малейший изгиб поверхности, улавливать оттенки изменения внутренней формы при чрезвычайной пластической цельности.
Рисунок пером или карандашом в основном состоит из линий – длинных или коротких, волнистых или отрывистых, толстых или тонких. Линии разные по своему характеру. Линией мы обозначаем контур предмета, его край, но в жизни этой черты нет. Характер линии выражает эмоции, чувства художника! На рисунках линии могут то сгущаться, то разрежаться, как звуки в музыке, то обходят пустое место, делаю паузу. Линиям необходим ритм. Ритм – это чередование соизмеримых между собой элементов. Ритмические соотношения могут быть бесконечно разнообразны, сложны и вариативны, а иногда очень просты.
Кисть с краской оставляет на плоскости изображения свой след – пятно, ручка или карандаш – линию. Но стоит несколько линий положить рядом, они будут смотреться пятном. Пятно – основное средство изображения на плоскости. Пятна могут быть бесконечно разными: большими и маленькими, округлыми и протяженными, светлыми и темными. Для художника белый и чёрный цвета являются наиболее сильным выразительным средством, ведь тёмное и светлое образуют контраст. Резкий контраст говорит нам о сильных драматических чувствах: это может быть и тревога, и решительность, и ярость, и утверждение. Для изображения бури, грозы нередко художники использовали резкий контраст. Мягкий контраст – там, где противоположности сближены.
В изобразительном искусстве важным выразительным средством являются тональные переходы – иногда почти незаметные, мягкие перетекания, а иногда резкие, контрастные пятна. Чтобы определить степень светлоты или темноты какого-либо цвета, в изобразительном искусстве используют понятие тон. Определить тон какого-либо пятна можно, только сравнив его с другим пятном, т. е. определив тональные отношения этих пятен. Художник должен уметь строить рисунок не только на основе контраста белого и чёрного, но и с учётом отношений к серому пятну, т. е. должен владеть тональной шкалой. Тональные отношения улавливают переходы света и тени от самого тёмного по ступенькам серого к самому светлому.
Тональная шкала
Пятна, из которых строятся изображения, обладают многими свойствами. Очень важно, какова поверхность пятна – его фактура. Например, поверхность пятна растекающейся тёмной краски сильно отличается от поверхности пятна, закрытого штрихами карандаша. Да и карандашом можно оставлять очень разный след, создающий различные характеры фактуры.
Примеры и разбор решения заданий тренировочного модуля:
1. Что из перечисленного не считается самостоятельным видом рисунка?
1) Набросок
2) Гравюра
3) Зарисовка
4) Эскиз
5) Литография
6) Учебный рисунок
7) Картина
8) Творческий рисунок
Правильный вариант/варианты:
2) Гравюра
4) Эскиз
5) Литография
7) Картина
2. Вставьте пропущенные элементы в пустые ячейки таблицы
Список пропущенных элементов:
Леонардо да Винчи
БОЯРЫНЯ МОРОЗОВА. Эскиз композиции. Карандаш. XIX в.
Набросок
Зарисовка
Рафаэль Санти.
МАТЬ И ДИТЯ. XVI в.
Правильный вариант/варианты:
Рафаэль Санти
В. И. Суриков
Леонардо да Винчи
МАТЬ И ДИТЯ. XVI в.
БОЯРЫНЯ МОРОЗОВА. Эскиз композиции. Карандаш. XIX в.
ЭСКИЗ РУК. Тушь. XV в.
Творческий рисунок
Набросок
Зарисовка
Линия как визуальный элемент в графическом дизайне
Графическая часть графического дизайна состоит из визуальных элементов, строительных блоков дизайна. С помощью художественного выражения мы выбираем эти визуальные элементы и размещаем их на поверхности в макете, чтобы передать идею.
Основные визуальные элементы, которые объединяются для создания графического дизайна, включают следующее: линия, цвет, форма, текстура, пространство, форма и типографика.
Какую бы работу вы ни создавали, будь то журнал, постер, веб-сайт или реклама, эти визуальные элементы будут играть определенную роль в вашем дизайне.
СтрокаОдним из основных визуальных элементов дизайна является линия, и ее нельзя недооценивать. Какими бы простыми ни были линии, они могут быть весьма универсальными и использоваться в качестве важнейших элементов дизайна. Линии могут быть прямыми, изогнутыми, толстыми, сплошными или пунктирными.
Линии могут использоваться для добавления структуры в композицию, для информации о кадре и для разделения информации .
При правильном использовании линии могут придать композиции элегантность, добавить иерархии и привлечь внимание к определенной точке.
С помощью шрифта линии можно использовать для выделения и ударения в слове, фразе или абзаце. Линии можно использовать для украшения, иллюстрации и представления информации в инфографике.
Если мы думаем о журналах, газетах и картах, то одним из наиболее распространенных визуальных элементов является линия, поскольку она очень хорошо структурирует информацию.
Вот несколько простых горизонтальных линий. У нас есть несколько штрихов разных размеров и несколько вариантов ниже.Линия может состоять не только из одного штриха, она может состоять из множества отдельных штрихов и даже точек.
Ниже приведены простые примеры использования линий в дизайне.
В этом первом примере линия играет роль построения инфографики, состоящей из линий разных оттенков. В целом, простой визуальный элемент с еще одной строкой ниже в качестве точки привязки связанной информации.
Далее пример типографики.Здесь линии используются для разделения и акцентирования внимания на определенном слове.
Далее приведен пример использования линий для создания границы. В этом примере есть две линии обводки, которые создают эту толстую и тонкую границу. Тип линий обводки, которые вы используете для связи с другими элементами, может определить внешний вид вашей композиции. В этом случае у нас есть ощущение бутика. Обратите внимание, у нас также есть линия, которая элегантно разделяет шрифт.
В этом примере линии используются преимущественно для структурирования композиции, но в то же время для украшения.Это простая индексная страница главы, где у нас есть большая темная линия, идущая вертикально вниз по странице, и более мелкие линии, идущие горизонтально по всей странице. Горизонтальные линии проходят через вертикальные и инвертируют цвет при этом, создавая свободную сетку для существования элемента типа. Вы можете видеть, где линии определяют и позиционируют элементы шрифта.
Далее приведен пример, когда линии можно использовать для создания структуры и украшения в минималистично-элегантном стиле.Здесь линии составляют элементы доски, которые обрамляют цитату, а линия рисуется вертикально, выровненная по левому краю, создавая основу для переноса абзаца рядом с ней. Черно-белые линии также можно использовать для добавления цвета на страницу, а также для структурирования.
Далее приведен общий пример того, как строки могут разделять информацию. Газеты могут быть очень сложными и загруженными медиа-платформами, где в любое время может быть представлено много информации. Здесь мы видим, как линии играют роль в разделении и оформлении информации.В этом разделе у нас также есть небольшие линии, детали, используемые для украшения. Линия не обязательно должна быть сплошным штрихом, но также может быть создана контрастом цвета или формы на странице. В статье у нас есть большая картинка, к которой, несмотря на отсутствие обводки, заливка сплошным цветом изображения создает линию вокруг нее. Ниже этого у нас есть основная часть текста, в которой у нас есть инфографика, состоящая из линий и других строк, которые разбивают информацию, такую как диаграммы, цитаты и нижние колонтитулы.
Последний пример показывает линии, создающие украшение, текстуру и структуру на странице. В этом примере используются различные типы линий. Сначала мы можем увидеть физическую линию, используемую для создания украшения с применением различных эффектов обводки. В этом случае линии также создают еще одну белую линию через середину страницы в качестве отрицательного пространства. Здесь у нас есть три столбца типа, где третий столбец нарушает выравнивание, чтобы соответствовать пространству, создавая интересный и динамичный макет.
Существует множество способов использования линий в дизайне, и это всего лишь несколько примеров. При просмотре графического дизайна обязательно обратите внимание на то, как линия рассматривается и используется как элемент дизайна.
Источник: Gareth David
(Архив) InDesign CS3: работа с встроенной графикой
Эта статья основана на устаревшем программном обеспечении.
Существует два способа вставки графики в текст в InDesign: независимый или встроенный.Встроенная графика становится частью текстового блока, в котором она размещена. Когда вы редактируете текст, рисунок сохраняет свое положение относительно текста, который обтекает рисунок. Графика изменит положение на странице (или даже текстовые рамки) по мере редактирования текста. Встроенная графика подходит для документации и отчетов, где графика должна сопровождать определенный текст. Ниже приведен пример встроенной графики в текстовом фрейме.
В InDesign можно обрезать, масштабировать, поворачивать и перемещать графические объекты, но нельзя вносить изменения в саму графику; это должно быть сделано в программе редактирования графики, такой как Adobe Photoshop.
Размещение встроенной графики
То, как вы размещаете графику, первоначально определяется вашим выбором либо Selection Tool , либо Type Tool . Встроенная графика размещается с помощью инструмента Type . Перед размещением встроенной графики необходимо создать текстовый фрейм. Информацию о текстовых фреймах см. в разделе Создание текста.
В Toolbox выберите инструмент Type Tool.
В нужном текстовом фрейме установите точку вставки в том месте, где должно появиться изображение.
В меню File выберите Place…
Появится диалоговое окно Place .Используя раскрывающийся список Look in , перейдите к файлу изображения, который хотите вставить, и выберите его.
Щелкните Открыть.
Изображение помещается в текстовую рамку.
Перемещение встроенной графики
Встроенная графика ограничивается границей или базовой линией строки текста, на которой она расположена, поэтому возможны лишь незначительные изменения в размещении.
ПРИМЕЧАНИЕ. Этот метод позволяет перемещать графику только по вертикали. Чтобы переместить графику по горизонтали, вам нужно будет вырезать и вставить графику на новое место в тексте.В наборе инструментов щелкните инструмент выделения .
Нажмите и удерживайте мышь на графике.
Перетащите изображение вверх или вниз, пока оно не окажется в нужном месте.
Когда изображение правильно размещено, отпустите кнопку мыши.
изображения для рисования музыки Все в высоком качестве и бесплатно для использования — даже в ваших коммерческих проектах. Его представил председательствующий в лучшем поле.Предыдущая: что можно сделать из пластилина. Осеннее дерево Клипарт. цвета, находятся в отдельных группах. Портрет кавказской женщины изолирован на синем фоне в разноцветном неоновом свете. Колледж также представляет почти высококачественные 400 … Вот несколько изображений разбитых нот Coldplay с самым высоким рейтингом в Интернете. Художник. 16 июля 2018 г. — Исследуйте CMUSE — Музыкальные новости и доску Enterta «Веселые музыкальные фото», за которыми следят 4221 человек на Pinterest. стена ретро винтажного стиля музыки звуковые колонки — рок музыка стоковые фотографии, фотографии и изображения без уплаты роялти. Просмотрите 507 120 доступных стоковых фотографий и изображений, посвященных рок-музыке, или выполните поиск по ключевым словам рок-н-ролл фон или рок-н-ролл 50-х годов, чтобы найти больше отличных стоковых фотографий и изображений. Мы говорим, что вы, возможно, захотите, чтобы этот вид графики Coldplay Broken Sheet Music стал самой популярной темой, потому что мы разделяем ее в справке Google или Facebook. Набор иконок музыкальных нот. 1920×1200 — Музыка — Майкл Джексон. День благодарения PNG клипарт. дом ручной рисунок книжка-раскраска сцена лампа рука рисовать 3d эскиз дом церковь рисунок линии рука рисовать стены крытый эскиз эскиз реальный рисунок, строительство, план дома роскошный дом.507 120 фотографий премиум-класса в высоком разрешении для рок-музыки. Посмотрите больше идей о клипах, музыкальных клипах, бесплатной музыке. Загрузите и используйте более 90 000 художественных стоковых фотографий бесплатно. Музыкальные образы. Посмотрите больше идей о музыкальных фото, музыкальном юморе, музыкальных шутках. Музыкальные образы. рисунок дома: стоковые видеоклипы. . 30%. мультяшные рисунки карандашом изображения легкие мультяшные рисунки красивые мультяшные картинки для рисования мультяшных персонажей рисование цветом. ноты клип арт: стоковые видеоклипы. Попробуйте эти кураторские коллекции. музыка вектор рисовать изображения музыка музыкальные ноты отдельные цветы и музыка картинки клип-арт музыкальный вектор ноты цвет музыкальная нота петь рисовать картинки музыка черно-белые музыкальные ноты.Картинки. Просмотреть все сообщения пользователя shapovmusic_admin | Веб-сайт. 5 233 752 музыкальных стоковых фотографий, векторной графики и иллюстраций доступно без лицензионных платежей. 143 … Просматривайте изображения премиум-класса на iStock | Скидка 20% на iStock. из 8918. 3072×2048 — Музыка — DJ. Мы идентифицировали его из послушного источника. Осциллограф можно заставить отображать формы, воспроизводя в нем звуки. Тысячи новых изображений каждый день. Абсолютно бесплатное использование. Высококачественные видео и изображения от Pexels. Специальности: Университет Колорадо в музыкальном колледже Боулдера предлагает впечатляющую серию программ как для студентов, так и для выпускников, которые охватывают практически все области музыки.Иллюстрация формы сердца Пожертвовать. Плакат в стиле ретро. Почтовая навигация. музыка символы сердце музыкальные ноты любовь музыкальные ноты открытка музыкальная нота постер музыкальные ноты в сердце сердце музыка логотип музыкальное сердце сердца музыка музыка из сердца музыка в сердце. Закрепите шпагат, … Загрузите изображения символов музыкальных нот из нашей подобранной коллекции. Зажим на шпагате, висящий красочный музыкальный символ и гитара. Иллюстрация увеличительного стекла. 891 761 стоковых фотографий, векторной графики и иллюстраций по запросу «дом» доступно без лицензионных платежей.Просматривайте премиум-изображения на iStock | Скидка 20% на iStock. 52 342 стоковых фотографий, векторной графики и иллюстраций в виде музыкальных нот доступны без лицензионных платежей. Смотрите музыкальные инструменты: стоковые видеоклипы. Праздничная шляпа Клипарт. 23 997 стоковых фотографий, векторной графики и иллюстраций нот доступны без лицензионных платежей (роялти). музыкальная нота сердце: стоковые видеоклипы. Блестящие абстрактные волны с музыкальными нотами. Смотрите больше статей в категории: Часто задаваемые вопросы. с а. Штриховой рисунок фасада здания штаб-квартиры Интернет-архива.Наши учебные программы сочетают традиции с инновациями и разработаны, чтобы предложить студентам гибкость для достижения различных профессиональных целей. 307 174 756 8 0. Стопка книг Клипарт 18. Группа музыкальных инструментов, включающая гитару, барабан, клавишные, бубен. Горячий шоколад картинки. Попробуйте эти тщательно подобранные коллекции Music Vectors. Создавать музыку из этих звуков, одновременно рисуя изображения с этими звуками Музыкальные векторы. Результаты для музыкальных обоев. ретро вечеринка. Один ученик пел песню, а другой рисовал на доске картинку, пытаясь запечатлеть … 436 62 694 1 0.Вы можете украсить общежитие или музыкальную комнату… Ответ: «Музыкальное рисование» было мероприятием, проведенным учителем рисования Ашубабу. из 10 346. Загрузите изображения символов музыкальных нот из нашей подобранной коллекции. дизайн живопись фон аннотация креатив природа темный текстура музыка графический дизайн краска зеленый архитектура люди художник узор hd фон девушка ночь еда цветы путешествия свет 4k обои технология и картинки.Обложки альбомов, инструменты, группы и сольные исполнители часто находят свое применение в произведениях искусства, которые либо сосредоточены на музыке, либо включают ее. Один ученик пел песню, а другой рисовал на доске картинку, пытаясь запечатлеть… 891 761 стоковых фотографий, векторной графики и иллюстраций доступно без лицензионных платежей. Просмотрите 444 профессиональных музыкальных клип-арта, доступных без лицензионных отчислений. Бесшовный фон с различными мультяшными музыкальными инструментами. Apple Music, 16 июля 2018 г. — Исследуйте CMUSE — Музыкальные новости и доску Enterta «Веселые музыкальные фото», за которыми следят 4221 человек на Pinterest.Создание музыки из этих звуков и одновременное рисование изображений с этими звуками 1 034 570 стоковых фотографий, векторной графики и иллюстраций доступны без лицензионных платежей (роялти). Иллюстрация текстовых эллипсов. Клип на шпагате, … 26 апреля 2019 г. — Изучите доску Терезы Оган «Бесплатные музыкальные клипы» на Pinterest. Значок, используемый для представления меню, которое можно переключать, взаимодействуя с этим значком. Выпьем за 2022 год! Будьте готовы к а. Ответ: «Музыкальное рисование» было мероприятием, проведенным учителем рисования Ашубабу.из 240. Apple Music Более 50 000 лучших фотографий с музыкой · 100% бесплатная загрузка · Pexels Stock Photo. дизайн живопись фон аннотация творчество природа темный текстура музыка графический дизайн краска зеленый архитектура люди художник узор hd фон девушка ночь еда цветы путешествия свет 4k обои технологии Специальности: Университет Колорадо в Музыкальном колледже Боулдера предлагает впечатляющую серию программ как для студентов, так и для выпускников исследования, которые охватывают практически все области музыки. АльфаСистем.Тайбэй зал пруд малыш на цветном фоне молодой человек клип радио закрыть дети музыка лето диск арт рок гитарист диджей группа маленький мальчик слушает песню. Ежедневно добавляются тысячи новых высококачественных изображений. Король поп-музыки Король. художник джазовая флейта на музыкальном оркестровом инструменте изолированная музыка живопись абстрактные духовые музыкальные инструменты черные гитары инструмент рисунки музыка музыкальные инструменты набор музыкальный набор рисунок. Музыка — это распространенная форма самовыражения и эффективный способ расслабиться. О shapovmusic_admin.347 36 220 5 1. Король поп-музыки. Набор музыкальных инструментов на белом фоне. ВЫКЛЮЧЕННЫЙ. Магазин музыкальных настенных рисунков от величайших ныне живущих художников мира. музыкальное искусство. 479 112 изображений музыкальных клипов на GoGraph. Используйте эти бесплатные музыкальные клипы для своих личных проектов или дизайнов. Вы можете украсить общежитие или музыкальную комнату… 1 034 570 стоковых фотографий, векторной графики и иллюстраций по запросу «музыкальные инструменты» доступны без лицензионных платежей. Премиум год. 50 000+ лучших фотографий с музыкой · 100% бесплатная загрузка · Pexels Stock Photo. Абстрактный музыкальный гитарный баннер 3d дизайн иллюстрации. Ознакомьтесь с нашей коллекцией вдохновляющих художественных изображений. из 524. AlphaEdifice6083. lp_an-anthology-of-african-music-8-the-music_senufo Ознакомьтесь с нашими рекомендациями для этой коллекции, отобранной нашими редакторами. векторов в коллекции Shutterstock. инструмент саксофон. В этом случае на столе должна быть доска и цветные мелки.Музыка может вызывать глубокие эмоции и улучшать когнитивные способности. Качество от HD до 4K, указание авторства не требуется! 471 96. Загрузите высококачественные музыкальные клипы из нашей коллекции из 67 000 000 графических клипов. Смотрите музыкальные стоковые видеоклипы. из 52 338 человек. Более. Бесшовный фон с разными … 90 изображений Музыкальных клипов. 143 … 26 апреля 2019 г. — Изучите доску Терезы Оган «Free Music Clip Art» на Pinterest. Наушники Гитара Природа Музыкальная студия Фортепианный фон Арт Концерт Абстракция Диджей Свет Ночь Музыкант Прослушивание музыки Фотография Люди. музыка рисунок изображения
pav gz9 97n jlu qu7 u6k 8p8 uap 84k vxy zlq acu gk6 f0f ldq og1 mzr 7fq wsh pf8
Пять линий графического дизайна | Work
Автор Fraser Sherman Обновлено 24 сентября 2021 г.
В графическом дизайне линии повсюду. Граница изображения, дороги на карте и даже линии, составляющие изображение смайлика. Чтобы работать дизайнером, вам нужно понимать пять типов линий в графическом дизайне и уметь их использовать.Многие опытные дизайнеры просто учатся на практике, но понимание теории использования линий часто является частью обучения и образования графических дизайнеров.
Подсказка
Пять основных типов линий в графическом дизайне: вертикальные, горизонтальные, диагональные, зигзагообразные и изогнутые.
Линия в графическом дизайне: определение
Согласно Art Foundations, в математике и геометрии линия — это траектория движения точки по плоскости. Он имеет одно измерение, длину. В искусстве линия, имеющая длину, но не имеющая ширины, была бы невидимой и бесполезной.Для графического дизайна более целесообразно описывать линию как путь точки, длина которой больше, чем ширина.
Линия в определении графического дизайна включает вертикальную, горизонтальную, диагональную, зигзагообразную и изогнутую. Кривая может варьироваться от плавного изгиба до плотных спиралей. Типы линий в графическом дизайне могут быть изображены разными способами: длинные или короткие, толстые или тонкие, непрерывные или пунктирные. Они могут меняться по мере своей длины — например, прямая линия может переходить в спираль.
Пять типов линий в графическом дизайне — это не просто произвольный выбор, говорит Your Art Path. Вертикальные линии говорят о высоте и силе, а горизонтальные — о расстоянии, спокойствии и стабильности. Диагонали предполагают движение и нестабильность; зигзаги могут передавать действие, волнение или нервозность; изогнутые линии подразумевают комфорт и легкость. Длина, ширина, текстура и стиль могут придать им дополнительный смысл. Когда они включены в дизайн или изображение, они также извлекают смысл из всего изображения.
1st Web Designer говорит, что линии не существуют изолированно от других элементов. Добавление цвета к линии влияет на ее воздействие. Темные цвета привлекают больше внимания, чем светлые или бледные.
Использование пяти линий
Пять типов линий в графическом дизайне можно использовать просто как набросок, отправную точку, прежде чем вы приступите к деталям вашего рисунка. Они также используются, чтобы направить взгляд зрителя на любую особенность эскиза или цифрового изображения, на которой вы хотите, чтобы он сосредоточился.Некоторые виды графического дизайна, ThoughtCo. говорит, все о линиях: например, карты, графики, планы этажей и каллиграфия. В других изображениях линии служат основной цели создания узнаваемого образа.
Контурная линия использует непрерывную линию для определения формы. В рисунках жестами используются быстрые мазки, чтобы запечатлеть сцену действия и движения. Параллельные или перекрестные линии создают текстуру, объем и штриховку. Подразумеваемые линии требуют настоящего мастерства — они используют элементы изображения, чтобы создать ощущение линии, которая на самом деле не была нарисована.
Стили и тенденции в использовании линий приходят и уходят. Сплошные линии были популярны в дизайне веб-сайтов одно время, потому что они делали сайт жестким, цельным и организованным, но затем они вышли из моды. Тенденции минималистского дизайна сайта сокращают количество строк или делают их максимально незаметными. Знание того, что в настоящее время популярно, может помочь вам при представлении проектов клиентам.
Эффекты линий на изображениях
Линии этого пешеходного моста действуют как магнит для глаз, притягивая взгляд к точке, где они, кажется, сходятся, добавляя глубины и трехмерности.Линии на изображении выполняют несколько функций для фотографа. Их можно использовать для получения различных эмоциональных реакций от зрителей. Они могут вести взгляд зрителя по пути через изображение или направлять внимание зрителя на конкретный объект или точку. Они могут помочь создать настроение, с мягкими изогнутыми линиями, вызывающими умиротворение, и резкими зубчатыми линиями, создающими ощущение действия или угрозы.
МЫ ПОНИМАЕМ ЛИНИИ ПРИРОДЫ
Большая часть эффекта линий на изображениях, по-видимому, основана на том, как мы видим линии в природе.Например, ветер, действующий на обычно прямое дерево, вызовет искривление линии дерева. Мы делаем вывод о красоте и действии из любой изогнутой линии. То же самое дерево, срубленное лесорубом, представляет собой диагональную линию, когда оно падает на землю, и поэтому мы делаем вывод о сильном динамическом движении по любой диагональной линии.
ГЛАЗА СЛЕДУЮТ ЗА ЛИНИЯМИ
Используйте сходящиеся линии, чтобы привлечь внимание к изображению. Прямые линии, которые сужаются по мере удаления от переднего плана, оказывают самое сильное и непосредственное влияние на движение глаз и могут создать у зрителя ощущение безотлагательности.Они также придают глубину изображению.
Сцены, содержащие прямые сходящиеся линии, могут быть весьма драматичными и мощными. Высокие здания, элементы которых (окна, колонны и т. д.) сходятся в вертикальных прямых линиях, кажутся более массивными, поскольку передний план «утяжеляется» более широким расположением линий.
Линии, которые направляют внимание зрителя к центру интереса изображения, известны как ведущие линии .
S-образные линии, начинающиеся в нижней части кадра, вовлекают зрителя в фотографию, переводя взгляд с детализированного переднего плана на центр интереса в средней зоне или на заднем плане.Широкоугольные объективы, как правило, весьма эффективно подчеркивают взаимосвязь между передним и задним планами, когда они соединены S-образной линией. S-образные и извилистые линии также способствуют ощущению ритма картины, ее эстетической приятности. Любая линия, имеющая волнистую форму, подразумевает мягкое движение, неторопливое и спокойное.
ВЛИЯНИЕ ФОРМЫ И ОРИЕНТАЦИИ ЛИНИЙ
Линии, изогнутые только в одном направлении (С-образные линии), создают впечатление силы в направлении изгиба.Чем больше дуга, тем больше силы подразумевается. Легкий изгиб ассоциируется с грацией и красотой, как в изогнутой линии лебединой шеи или выгнутом теле танцора.
Прямые линии создают ощущение жесткости и напряжения, они меньше ассоциируются с красотой и больше с действием, чем изогнутые линии. Если сообщение вашего изображения состоит из резкости, резкости, жестокости или срочности, использование прямых линий поможет передать это сообщение, обычно с большей безличностью и меньшей мягкостью, чем изогнутые линии.
Горизонтальная линия означает отдых, как спящий человек или упавшее дерево. Это наименее динамичная из всех линий. Это может вызвать чувство стабильности и постоянства. Прямая вертикальная линия, как флагшток, также предполагает устойчивость и равновесие. Впечатления усиливаются, когда линии толще. Вертикальные линии могут придать ощущение волнения и силы. Жирные вертикальные линии — например, колонны и величественные деревья — могут означать достоинство или величие.
Расположение линии горизонта в композиции может иметь решающее значение для изображения.Когда он в кадре низок, все, что над ним, подчеркнуто. И наоборот, когда линия горизонта располагается ближе к верхней части кадра, большее значение придается тому, что находится под ней.
Используйте диагональные линии, чтобы создать динамическое ощущение, либо неуравновешенное, как падающий столб, либо направленное, как путь ракеты, взмывающей в воздух. Когда диагональные линии идут к точке схода, они придают изображению ощущение перспективы. Ощущение действия или напряжения, создаваемое диагональными линиями, может усиливаться, если несколько линий пересекаются друг с другом под острыми углами, как траектории трассирующих пуль в бою.Диагонали, которые параллельны, означают больший порядок, но все же подразумевают действие.
Если линии неровные и прерывистые, как на типичном зигзагообразном мультяшном изображении молнии, они энергичны, угрожающи и подразумевают напряжение, близкое к тревоге.
Линии не обязательно должны быть очевидными, как линии, образованные рельсами железнодорожного пути. Они могут быть внушенными или воображаемыми. Например, размещение объекта может вывести линию. Представьте себе военный плац, где трое или более солдат стоят по стойке смирно.Взгляд переводится с одного на другой, как если бы они были соединены линией. И это действительно так, но эта линия — воображаемая, созданная вашим умом.
ОРИЕНТАЦИЯ КАМЕРЫ
Когда линии вашего объекта в основном вертикальны или ведут ваш взгляд в вертикальном направлении, снимайте сцену, повернув камеру вертикально. И наоборот, горизонтальные линии обычно означают, что вы должны использовать горизонтальное обрамление.
Есть смесь линий, идущих во всех направлениях? Попробуйте снимать как в вертикальном, так и в горизонтальном формате, тщательно кадрируя, чтобы подчеркнуть линии, соответствующие ориентации вашей камеры.
Диагональные линии создают ощущение дисбаланса и действия.
Линии могут привлечь внимание к изображению. И, если они плавно изгибаются, они могут создать ощущение покоя и грации.
Сами линии могут быть предметом изображения. Эти следы от шин кажутся почти трехмерными, как свернутая пружина, тогда как белые полосы движения создают ощущение движения.
В этой композиции преобладают строгие линии. Поскольку большинство из них параллельны и угловаты, они передают почти механическое ощущение порядка.
Эта диагональная линия руки танцовщицы практически делит изображение на две части. Ткань вуали смягчает воздействие линии, создавая ощущение замедленного движения.
Сочетание линий создает интересную композицию.Начальный графический дизайн: основы дизайна
Урок 5: Основы дизайна
/ru/beginning-graphic-design/images/content/
Основа искусства, дизайна и многого другого
Основы дизайна лежат в основе каждого визуального средства , от изобразительного искусства до современного веб-дизайна. Они присутствуют даже в, казалось бы, неважных деталях, таких как шрифты, из которых состоит большинство композиций.
Что общего у этих примеров? Некоторые очень простые элементы, в том числе линия , форма , форма , текстура и баланс . Сами по себе они могут показаться незначительными, но вместе они являются частью почти всего, что мы видим и создаем.
Основы поначалу могут пугать, особенно если вы не считаете себя художником. Но будьте непредвзяты — они могут многому научить вас в работе с различными активами и создании простых визуальных элементов с нуля.
Посмотрите видео, чтобы узнать больше об основах дизайна.
Линия
Линия — это фигура, которая соединяет две или более точек . Он может быть толстым, тонким, волнистым или зубчатым — этот список можно продолжить. Каждая возможность придает линии немного другое ощущение.
Линии часто появляются в дизайне; например, в рисунков и иллюстраций. Они также распространены в графических элементах , таких как текстуры, узоры и фоны.
Lines можно использовать и в более скромных композициях , — для организации, акцентирования или просто украшения. В приведенном ниже примере линии использовались для создания блок-схемы, которая направляет взгляд читателя от одного элемента к другому.
При работе с линиями обратите внимание на такие вещи, как вес , цвет , текстура и стиль . Эти тонкие качества могут оказать большое влияние на восприятие вашего дизайна.
Ищите места, где линии прячутся на виду; например, в текст . Даже здесь, экспериментируя с леской разного качества, можно получить очень разные результаты.
Форма
Фигура — это любая двумерная область с распознаваемой границей. Сюда входят круги, квадраты, треугольники и так далее.
Формы делятся на две отдельные категории: геометрические (или обычные) и органические (где формы имеют более свободную форму).
Формы являются жизненно важной частью передачи идей визуально . Они придают изображениям вес и делают их узнаваемыми. Мы понимаем уличные знаки, символы и даже абстрактное искусство в основном благодаря формам.
Формы имеют удивительное количество применений в повседневном дизайне . Они могут помочь вам упорядочить или разделить контент, создать простые иллюстрации или просто добавить интереса к вашей работе. Посмотрите, сможете ли вы найти множество примеров на изображении ниже.
Формы важны, потому что они являются основой очень многих вещей. Научитесь искать их в других дизайнах, и вскоре вы начнете видеть их повсюду.
Форма
Когда форма становится 3D , мы называем это формой. Формы составляют множество вещей в реальном мире, включая скульптуры, архитектуру и другие трехмерные объекты.
Однако формы не обязательно должны быть трехмерными. Их также можно изобразить с помощью иллюстраций , используя такие приемы, как свет, тень и перспектива, чтобы создать иллюзию глубины.
В двухмерном дизайне форма делает реализм возможным . Без него визуализация, подобная изображению ниже — шару с подсветкой и затенением — просто не была бы такой же.
Даже изображения, которые менее реалистичны, используют аналогичные методы для создания объема. Ниже освещение и затенение стилизованы, но все же намекают на форму и глубину.
В бытовой композиции назначение формы то же, но в меньшем масштабе. Например, простая тень может создать иллюзию слоев или придать объекту ощущение места .
Базовые формы могут придать вашей работе нотку реализма, что является мощным инструментом при умеренном использовании.
Текстура
Текстура — это физическое качество поверхности . Как и форма, он может быть частью трехмерного объекта , как в примере ниже (небольшой колючий кактус в блестящем керамическом горшке).
Или это может быть подразумеваемым через иллюстрацию, предполагая, что имела бы текстуру, если бы существовала в реальной жизни.
В дизайне текстура добавляет глубину и тактильность плоскому изображению. Объекты могут казаться гладкими, шероховатыми, твердыми или мягкими, в зависимости от используемых элементов.
Фоновые изображения отлично подходят для начинающих, а текстуры могут сделать вашу работу интереснее. Присмотритесь внимательно, и вы можете обнаружить текстуру в самых неожиданных местах, например, состаренные шрифты и гладкие глянцевые значки.
Только будьте осторожны, чтобы не переборщить — слишком много текстур в одном дизайне может быстро стать подавляющим.
Весы
Баланс — это равномерное распределение визуального веса (точнее, насколько любой элемент привлекает взгляд зрителя). На баланс могут влиять многие вещи, в том числе цвет , размер , номер и отрицательное пространство .
Освоение баланса может быть сложным для новичков, потому что это требует некоторой интуиции. К счастью, мир дизайна полон примеров, которые помогут вам понять его различные итерации.
Симметричные конструкции одинаковые или похожие с обеих сторон оси. Они кажутся уравновешенными, потому что каждая сторона фактически представляет собой 90 328 одних и тех же 90 328 (если не идентичных).
Асимметричный конструкции разные, но вес по-прежнему равномерно распределен . Композиция сбалансирована, потому что она привлекает внимание к нужным вещам (в данном примере к имени человека и логотипу компании).
Правило третей
Многие люди, в том числе дизайнеры и фотографы, используют стратегию, называемую правилом третей .Это представляет вашу рабочую область, разделенную на сетку 3×3 . Фокус изображения размещается на одной из линий сетки или рядом с ней, создавая визуальный баланс с остальным пространством.
Мы находим этот тип композиции привлекательным, потому что, согласно исследованиям, человеческий глаз естественным образом следует этому пути при сканировании рисунка.
Собираем все вместе
Основы дизайна — это большая картина — другими словами, научиться ценить множество мелких деталей, составляющих каждую композицию.
Это понимание можно применить почти к любому типу проектов , независимо от того, вы создаете собственную графику или просто ищете простые способы улучшения своей работы.
Надеемся, вам понравилось изучение основ дизайна!
Обязательно ознакомьтесь с остальными темами по графическому дизайну, в том числе:
/ru/beginning-graphic-design/branding-and-identity/content/
Рисование графики — Изучите веб-разработку
Браузер содержит несколько очень мощных инструментов программирования графики, от языка Scalable Vector Graphics (SVG) до API для рисования на элементах HTML
(см. Canvas API и WebGL) .В этой статье представлены общие сведения о холсте и дополнительные ресурсы, которые помогут вам узнать больше.
Как мы говорили в нашем модуле мультимедиа HTML и встраивания, Интернет изначально был просто текстом, что было очень скучно, поэтому были представлены изображения — сначала через элемент
background-image.
и SVG.Однако этого было недостаточно. Хотя вы могли использовать CSS и JavaScript для анимации векторных изображений SVG (и иных манипуляций) — в том виде, в каком они представлены разметкой, — сделать то же самое для растровых изображений по-прежнему не было возможности, а доступные инструменты были весьма ограничены.В Интернете по-прежнему не было возможности эффективно создавать анимацию, игры, трехмерные сцены и выполнять другие требования, которые обычно обрабатываются языками более низкого уровня, такими как C++ или Java.
Ситуация начала улучшаться, когда браузеры начали поддерживать элемент
и связанный с ним Canvas API — Apple изобрела его примерно в 2004 году, а другие браузеры реализовали его в последующие годы. Как вы увидите ниже, холст предоставляет множество полезных инструментов для создания 2D-анимации, игр, визуализации данных и других типов приложений, особенно в сочетании с некоторыми другими API-интерфейсами, предоставляемыми веб-платформой.
В приведенном ниже примере показана простая двухмерная анимация прыгающих мячей на основе холста, которую мы впервые встретили в нашем модуле «Введение в объекты JavaScript»:
Примерно в 2006–2007 годах Mozilla начала работу над экспериментальной реализацией 3D-холста. Это стало WebGL, которое завоевало популярность среди поставщиков браузеров и было стандартизировано примерно в 2009–2010 годах. WebGL позволяет создавать настоящую 3D-графику прямо в веб-браузере; в приведенном ниже примере показан простой вращающийся куб WebGL:
В этой статье основное внимание будет уделено 2D-канвасу, поскольку необработанный код WebGL очень сложен.Однако мы покажем, как использовать библиотеку WebGL для более простого создания 3D-сцены, и вы можете найти учебник, посвященный сырому WebGL, в другом месте — см. Начало работы с WebGL.
Примечание. Основные функции холста хорошо поддерживаются во всех браузерах, за исключением IE 8 и ниже для 2D-холста и IE 11 и ниже для WebGL.
Если вы хотите создать 2D-сцену или 3D-сцену на веб-странице, вам нужно начать с элемента HTML
..Этот элемент используется для определения области на странице, в которую будет нарисовано изображение. Это так же просто, как добавить на страницу элемент:
<холст>холст>
Это создаст холст на странице размером 320 на 240 пикселей.
Внутри тегов холста вы можете поместить запасной контент, который отображается, если браузер пользователя не поддерживает холст.
<холст>
Ваш браузер не поддерживает холст.Бу-ху!
холст>Конечно, приведенное выше сообщение действительно бесполезно! В реальном примере вы хотели бы связать запасной контент с содержимым холста. Например, если вы визуализировали постоянно обновляемый график цен на акции, резервным содержимым может быть статическое изображение последнего графика акций с замещающим текстом, указывающим, какие цены указаны в тексте.
Создание и изменение размера нашего холста
Давайте начнем с создания нашего собственного холста, на котором мы будем рисовать будущие эксперименты.
- Сначала сделайте локальную копию нашего файла 0_canvas_start.html и откройте ее в текстовом редакторе.
- Добавьте в него следующий код сразу под открывающим тегом
<холст>
Добавьте сюда подходящий запасной вариант.
холст>класс
к элементу, чтобы его было легче выбирать, если у нас есть несколько холстов на странице, но мы удалили атрибуты
width
иheight
на данный момент (вы можете добавить их обратно, если хотите, но мы установим их с помощью JavaScript в разделе ниже).Холсты без явной ширины и высоты по умолчанию имеют ширину 300 пикселей и высоту 150 пикселей. - Теперь добавьте следующие строки JavaScript внутри элемента
Здесь мы сохранили ссылку на холстconst canvas=document.querySelector('.myCanvas');константная ширина=холст.ширина=окно.внутренняя ширина;const height=canvas.height=window.innerHeight;
в константе canvas
.Во второй строке мы устанавливаем как новую константу,ширину
,так и свойство холста,ширину
,равноеWindow.innerWidth
(что дает нам ширину области просмотра).В третьей строке мы устанавливаем как новую константу,высоту
,так и свойство холстаheight
,равноеWindow.innerHeight
(что дает нам высоту области просмотра).Итак,теперь у нас есть холст,который заполняет всю ширину и высоту окна браузера!Вы также увидите,что мы связываем присваивания вместе с несколькими знаками равенства — это разрешено в JavaScript,и это хороший метод,если вы хотите сделать несколько переменных равными одному и тому же значению.Мы хотели сделать ширину и высоту холста легкодоступными в переменных ширины/высоты,так как это полезные значения,которые можно использовать позже(например,если вы хотите нарисовать что-то ровно посередине ширины холста). - Если вы сейчас сохраните и загрузите свой пример в браузере,вы ничего не увидите,и это нормально,но вы также увидите полосы прокрутки — для нас это проблема,которая возникает из-за того,что элемент
имеет
margin
,что при добавлении к нашему полноэкранному холсту приводит к тому,что документ шире окна.Чтобы избавиться от полос прокрутки,нам нужно удалитьmargin
,а также установитьoverflow
наhidden
.Добавьте следующее ввашего документа:
Теперь полосы прокрутки должны исчезнуть.<стиль>тело{маржа:0;переполнение:скрыто;}стиль>
Примечание:Как правило,размер изображения следует задавать с помощью атрибутов HTML или свойств DOM,как описано выше.Вы можете использовать CSS,но проблема в том,что изменение размера выполняется после рендеринга холста,и,как и любое другое изображение(рендеринг холста — это просто изображение),изображение может стать пиксельным/искаженным.
Получение контекста холста и окончательная настройка
Нам нужно сделать одну последнюю вещь,прежде чем мы сможем считать наш шаблон холста законченным.Чтобы рисовать на холсте,нам нужно получить специальную ссылку на область рисования,называемую контекстом.Это делается с помощью
HTMLCanvasElement.getContext()
,который для базового использования принимает одну строку в качестве параметра,представляющего тип контекста,который вы хотите получить.В этом случае нам нужен 2D-холст,поэтому добавьте следующую строку JavaScript под остальными внутри элемента
:
const ctx=canvas.getContext('2d');
Примечание:других значений контекста,которые вы можете выбрать,включают
webgl
для WebGL,webgl2
для WebGL 2 и т.д.,но в этой статье они нам не понадобятся.Вот и все — наш холст загрунтован и готов к рисованию!Переменная
ctx
теперь содержит объектCanvasRenderingContext2D
,и все операции рисования на холсте будут включать манипулирование этим объектом.Давайте сделаем еще одну вещь,прежде чем двигаться дальше.Мы окрасим фон холста в черный цвет,чтобы дать вам первое представление об API холста.Добавьте следующие строки внизу вашего JavaScript:
кар.fillStyle='rgb (0, 0, 0)';ctx.fillRect(0,0,ширина,высота);
Здесь мы устанавливаем цвет заливки,используя свойство холста
fillStyle
(принимает значения цвета так же,как и свойства CSS),затем рисуем прямоугольник,который покрывает всю область холста,с помощью методаfillRect
(первые два параметры — это координаты верхнего левого угла прямоугольника;последние два — это ширина и высота,на которых вы хотите нарисовать прямоугольник — мы говорили вам,что эти переменные(ширина
)ивысота(
)будут полезны)!Хорошо,наш шаблон готов,пора двигаться дальше.
Как мы сказали выше,все операции рисования выполняются с помощью манипуляций с объектом
CanvasRenderingContext2D
(в нашем случаеctx
).Многим операциям необходимо задать координаты,чтобы точно определить,где что-то рисовать — верхний левый угол холста — это точка(0,0),горизонтальная ось(x)проходит слева направо,а вертикальная ось(y)проходит от сверху вниз.Рисование фигур,как правило,выполняется с использованием примитива прямоугольной формы или путем трассировки линии по определенному пути с последующим заполнением формы.Ниже мы покажем,как сделать и то,и другое.
Простые прямоугольники
Начнем с простых прямоугольников.
- Прежде всего,сделайте копию нового закодированного шаблона холста(или сделайте локальную копию 1_canvas_template.html,если вы не выполнили описанные выше шаги).
- Затем добавьте следующие строки в конец кода JavaScript:
Если вы сохраните и обновите страницу,вы увидите,что на холсте появился красный прямоугольник.Его верхний левый угол находится на расстоянии 50 пикселей от верхнего и левого края холста(как определено первыми двумя параметрами),его ширина составляет 100 пикселей,а высота — 150 пикселей(согласно третьему и четвертому параметрам).ctx.fillStyle='rgb(255, 0, 0)';ctx.fillRect(50,50,100,150);
- Давайте добавим еще один прямоугольник — на этот раз зеленый.Добавьте следующее внизу вашего JavaScript:
Сохраните и обновите,и вы увидите новый прямоугольник.Это поднимает важный вопрос:графические операции,такие как рисование прямоугольников,линий и т.д.,выполняются в том порядке,в котором они происходят.Думайте об этом как о покраске стены,где каждый слой краски перекрывает друг друга и может даже скрывать то,что находится под ним.Вы ничего не можете сделать,чтобы изменить это,поэтому вам нужно тщательно продумать порядок,в котором вы рисуете графику.ctx.fillStyle='rgb (0, 255, 0)';ctx.fillRect(75,75,100,100);
- Обратите внимание,что вы можете рисовать полупрозрачную графику,указав полупрозрачный цвет,например,используя
rgba()
.Значениеи
определяет так называемый «альфа-канал» или степень прозрачности цвета.Чем выше его значение,тем больше он будет скрывать то,что за ним скрывается.Добавьте в свой код следующее:ctx.fillStyle='rgba (255, 0, 255, 0,75)';ctx.fillRect(25,100,175,50);
- Теперь попробуйте нарисовать еще несколько собственных прямоугольников;развлекайся!
Обводки и толщина линий
До сих пор мы рассматривали рисование заполненных прямоугольников,но вы также можете рисовать прямоугольники,которые являются просто контурами(называемыештрихамив графическом дизайне).Чтобы задать цвет обводки,используйте свойство
strokeStyle
;рисование прямоугольника штриха выполняется с помощьюstrokeRect
.- Добавьте следующее к предыдущему примеру,снова под предыдущими строками JavaScript:
ctx.strokeStyle='rgb(255, 255, 255)';ctx.strokeRect(25,25,175,200);
- Ширина штрихов по умолчанию 1 пиксель;вы можете настроить значение свойства
lineWidth
,чтобы изменить это(требуется число,представляющее количество пикселей в ширину штриха).Добавьте следующую строку между двумя предыдущими строками:
Теперь вы должны увидеть,что ваш белый контур стал намного толще!Это все на данный момент.На данный момент ваш пример должен выглядеть так:
Рисование путей
Если вы хотите нарисовать что-то более сложное,чем прямоугольник,вам нужно нарисовать путь.По сути,это включает в себя написание кода,точно определяющего,по какому пути перо должно двигаться по холсту,чтобы обвести фигуру,которую вы хотите нарисовать.Canvas включает в себя функции для рисования прямых линий,окружностей,кривых Безье и многого другого.
Давайте начнем этот раздел с создания новой копии нашего шаблона холста(1_canvas_template.html),чтобы нарисовать новый пример.
Мы будем использовать некоторые общие методы и свойства во всех следующих разделах:
beginPath()
— начать рисовать путь в точке,где перо в данный момент находится на холсте.На новом холсте перо начинается с(0,0).moveTo()
— переместить перо в другую точку холста,не записывая и не обводя линию;перо «прыгает» в новое положение.fill()
— нарисовать фигуру с заливкой,заполнив путь,который вы проследили до сих пор.stroke()
— нарисуйте контурную фигуру,нарисовав обводку вдоль уже нарисованного пути.- Вы также можете использовать такие функции,как
lineWidth
иfillStyle
/strokeStyle
с путями и прямоугольниками.
Типичная простая операция рисования пути будет выглядеть примерно так:
ctx.fillStyle='rgb(255, 0, 0)';ктх.началоПути();ctx.moveTo(50,50);ctx.заполнить();
Линии рисования
Нарисуем на холсте равносторонний треугольник.
- Прежде всего,добавьте следующую вспомогательную функцию в конец кода.Это преобразует значения градусов в радианы,что полезно,потому что всякий раз,когда вам нужно предоставить значение угла в JavaScript,оно почти всегда будет в радианах,но люди обычно думают в градусах.
функция degToRad(градусы){вернуть градусы*Math.ПИ/180;};
- Затем начните свой путь,добавив следующее ниже вашего предыдущего добавления;здесь мы устанавливаем цвет для нашего треугольника,начинаем рисовать путь,а затем перемещаем перо на(50,50),ничего не рисуя.Здесь мы начнем рисовать наш треугольник.
ctx.fillStyle='rgb(255, 0, 0)';ctx.beginPath();ctx.moveTo(50,50);
- Теперь добавьте следующие строки внизу вашего скрипта:
Давайте рассмотрим это по порядку:Сначала мы проводим линию через(150,50)— теперь наш путь идет на 100 пикселей вправо по оси x.Во-вторых,мы определяем высоту нашего равностороннего треугольника,используя простую тригонометрию.По сути,мы рисуем треугольник вершиной вниз.Углы в равностороннем треугольнике всегда равны 60 градусам;чтобы определить высоту,мы можем разделить его посередине на два прямоугольных треугольника,каждый из которых будет иметь углы 90 градусов,60 градусов и 30 градусов.По сторонам:кар.линияTo(150,50);пусть triHeight=50*Math.tan(degToRad(60));ctx.lineTo(100,50+triHeight);ctx.lineTo(50,50);ctx.заполнить();
- Самая длинная сторона называетсягипотенузой
- Сторона рядом с углом 60 градусов называетсясмежной с,что,как мы знаем,составляет 50 пикселей,так как это половина линии,которую мы только что нарисовали.
- Сторона,противоположная углу в 60 градусов,называетсянапротив,что является высотой треугольника,который мы хотим вычислить.
50*Math.tan(degToRad(60))
.Мы используем нашу функциюdegToRad()
для преобразования 60 градусов в радианы,так какMath.tan()
ожидает входное значение в радианах. - После вычисления высоты мы проводим еще одну линию до
(100,50+triHeight)
.Координата X проста;оно должно быть на полпути между двумя предыдущими значениями X,которые мы установили.С другой стороны,значение Y должно быть равно 50 плюс высота треугольника,поскольку мы знаем,что вершина треугольника находится в 50 пикселях от вершины холста. - Следующая линия проводит линию обратно к начальной точке треугольника.
- Наконец,мы запускаем
ctx.fill()
,чтобы завершить путь и заполнить форму.
Круги для рисования
Теперь давайте посмотрим,как нарисовать круг на холсте.Это достигается с помощью метода
arc()
,который рисует всю окружность или ее часть в указанной точке.- Давайте добавим дугу на наш холст — добавьте следующее в конец вашего кода:
кар.fillStyle='rgb (0, 0, 255)';ctx.beginPath();ctx.arc(150,106,50,degToRad(0),degToRad(360),false);ctx.заполнить();
arc()
принимает шесть параметров.Первые два определяют положение центра дуги(X и Y соответственно).Третий параметр — это радиус круга,четвертый и пятый — начальный и конечный углы,под которыми следует рисовать круг(поэтому указание 0 и 360 градусов дает нам полный круг),а шестой параметр определяет,следует ли рисовать круг против часовой стрелки(против часовой стрелки)или по часовой стрелке(false
— по часовой стрелке).Примечание:0 градусов по горизонтали вправо.
- Попробуем добавить еще одну дугу:
Схема здесь очень похожа,но с двумя отличиями:ctx.fillStyle='желтый';ctx.beginPath();ctx.arc(200,106,50,degToRad(-45),degToRad(45),true);ctx.lineTo(200,106);ctx.заполнить();
- Мы установили последний параметр
arc()
наtrue
,что означает,что дуга рисуется против часовой стрелки,что означает,что даже если дуга указана как начинающаяся с-45 градусов и заканчивающаяся на 45 градусов,мы рисуем дуга вокруг 270 градусов не внутри этой части.Если бы вы изменилиtrue
наfalse
,а затем повторно запустили код,был бы нарисован только 90-градусный срез круга. - Перед вызовом
fill()
мы проводим линию к центру круга.Это означает,что мы получаем довольно красивый вырез в стиле Pac-Man.Если вы удалите эту линию(попробуйте!),а затем снова запустите код,вы получите просто обрезанный край круга между начальной и конечной точками дуги.Это иллюстрирует еще один важный момент холста — если вы попытаетесь заполнить неполный путь(т.е.тот,который не закрыт),браузер заполняет прямую линию между начальной и конечной точками,а затем заполняет ее.
- Мы установили последний параметр
Пока все;ваш последний пример должен выглядеть так:
Примечание:Чтобы узнать больше о расширенных функциях рисования контуров,таких как кривые Безье,ознакомьтесь с нашим руководством по рисованию фигур на холсте.
Text
Canvas также имеет функции для рисования текста.Давайте кратко рассмотрим их.Начните с создания еще одной новой копии нашего шаблона холста(1_canvas_template.html),в котором можно нарисовать новый пример.
Текст рисуется двумя способами:
Оба они в основном используют три свойства:текстовую строку для рисования и координаты X и Y точки,с которой начинается рисование текста.Это работает какнижний левыйугол текстового поля(буквально,поле,окружающее текст,который вы рисуете),что может сбить вас с толку,поскольку другие операции рисования,как правило,начинаются с верхнего левого угла — имейте это в виду.
Существует также ряд свойств,помогающих управлять визуализацией текста,таких как
шрифт
,который позволяет указать семейство шрифтов,размер и т.д.Он принимает в качестве значения тот же синтаксис,что и свойство CSSшрифт
.Попробуйте добавить следующий блок внизу JavaScript:
ctx.strokeStyle='белый';ctx.lineWidth=1;ctx.font='36px arial';ctx.strokeText('Текст холста',50,50);ctx.fillStyle='красный';ctx.font='48px Грузия';ктх.fillText('Текст холста',50,150);
Здесь мы рисуем две строки текста,одну обводку и другую обводку.Окончательный пример должен выглядеть так:
Поиграй и посмотри,что у тебя получится!Дополнительные сведения о параметрах,доступных для текста холста,см.в разделе Текст рисования.
Нанесение изображений на холст
На холст можно наносить внешние изображения.Это могут быть простые изображения,кадры из видео или содержимое других полотен.На данный момент мы просто рассмотрим случай использования нескольких простых изображений на нашем холсте.
- Как и раньше,сделайте еще одну новую копию нашего шаблона холста(1_canvas_template.html),чтобы нарисовать новый пример.В этом случае вам также потребуется сохранить копию нашего образца изображения — firefox.png — в том же каталоге.Изображения рисуются на холсте с помощью метода
drawImage()
.Самая простая версия принимает три параметра — ссылку на изображение,которое вы хотите визуализировать,и координаты X и Y верхнего левого угла изображения. - Давайте начнем с получения источника изображения для встраивания в наш холст.Добавьте следующие строки в конец вашего JavaScript:
Здесь мы создаем новый объектпусть изображение=новое изображение();image.src='firefox.png';
HTMLImageElement
,используя конструкторImage()
.Возвращаемый объект имеет тот же тип,что и возвращаемый при захвате ссылки на существующий элемент).Затем мы устанавливаем его атрибут
src
равным нашему изображению с логотипом Firefox.В этот момент браузер начинает загружать изображение. - Теперь мы можем попытаться внедрить изображение с помощью
drawImage()
,но нам нужно сначала убедиться,что файл изображения был загружен,иначе код завершится ошибкой.Мы можем добиться этого с помощью обработчика событийonload
,который будет вызываться только после завершения загрузки изображения.Добавьте следующий блок ниже предыдущего:
Если вы сейчас загрузите свой пример в браузере,вы должны увидеть изображение,встроенное в холст.image.onload=функция(){ctx.drawImage(изображение,50,50);}
- Но это еще не все!Что,если мы хотим отобразить только часть изображения или изменить его размер?Мы можем сделать и то,и другое с помощью более сложной версии
drawImage()
.Обновите строкуctx.drawImage()
следующим образом:ctx.drawImage(изображение,20,20,185,175,50,50,185,175);
- Как и прежде,первый параметр — это ссылка на изображение.
- Параметры 2 и 3 определяют координаты левого верхнего угла области,которую вы хотите вырезать из загруженного изображения,относительно левого верхнего угла самого изображения.Ничего слева от первого параметра или выше второго не будет нарисовано.
- Параметры 4 и 5 определяют ширину и высоту области,которую мы хотим вырезать из исходного загруженного изображения.
- Параметры 6 и 7 определяют координаты,в которых вы хотите нарисовать левый верхний угол вырезанной части изображения относительно левого верхнего угла холста.
- Параметры 8 и 9 определяют ширину и высоту для рисования вырезаемой области изображения.В этом случае мы указали те же размеры,что и исходный фрагмент,но вы можете изменить его размер,указав другие значения.
Окончательный пример должен выглядеть так:
До сих пор мы рассмотрели некоторые очень простые способы использования 2D-холста,но на самом деле вы не сможете ощутить всю мощь холста,если не обновите или не анимируете его каким-либо образом.В конце концов,холст предоставляет изображения для сценариев!Если вы не собираетесь ничего менять,то можете просто использовать статичные изображения и избавить себя от всей работы.
Создание цикла
Играть с циклами в холсте довольно весело — вы можете запускать команды холста внутри цикла
for
(или другого типа),как и любой другой код JavaScript.Давайте построим простой пример.
- Сделайте еще одну новую копию нашего шаблона холста(1_canvas_template.html)и откройте ее в редакторе кода.
- Добавьте следующую строку в конец вашего JavaScript.Он содержит новый метод
translate()
,который перемещает исходную точку холста:
Это приводит к тому,что начало координат(0,0)перемещается в центр холста,а не в верхний левый угол.Это очень полезно во многих ситуациях,таких как эта,когда мы хотим,чтобы наш дизайн рисовался относительно центра холста.кар.перевести(ширина/2,высота/2);
- Теперь добавьте следующий код в конец JavaScript:
Здесь мы реализуем ту же функциюфункция degToRad(градусы){возврат градусов*Math.PI/180;};функция rand(мин,макс){вернуть мат.пол(Math.random()*(max-min+1))+(min);} пусть длина=250;пусть moveOffset=20;for(var i=0;i<длина;i++){}
degToRad()
,которую мы видели в примере треугольника выше,функциюrand()
,которая возвращает случайное число между заданными нижней и верхней границами,length
иmoveOffset
переменных(о котором мы узнаем больше позже),и пустой циклдля
. - Идея здесь в том,что мы будем рисовать что-то на холсте внутри цикла
for
и каждый раз повторять это,чтобы создать что-то интересное.Добавьте следующий код в циклfor
:
Итак,на каждой итерации мы:ctx.fillStyle='rgba('+(длина 255)+', 0, '+(длина 255)+', 0,9)';ctx.beginPath();ctx.moveTo(moveOffset,moveOffset);ctx.lineTo(moveOffset+длина,moveOffset);пусть triHeight=длина/2*Math.tan(degToRad(60));ctx.lineTo(moveOffset+(длина/2),moveOffset+triHeight);ctx.lineTo(moveOffset,moveOffset);ctx.заполнить();длина--;смещение смещения+=0,7;ctx.rotate(degToRad(5));
- Установите для
fillStyle
оттенок слегка прозрачного фиолетового,который каждый раз меняется в зависимости от значенияlength
.Как вы увидите позже,длина становится меньше каждый раз,когда выполняется цикл,поэтому здесь эффект заключается в том,что цвет становится ярче с каждым последующим нарисованным треугольником. - Начать путь.
- Переместите перо на координату
(moveOffset,moveOffset)
;Эта переменная определяет,как далеко мы хотим двигаться каждый раз,когда рисуем новый треугольник. - Нарисуйте линию с координатой
(moveOffset+length,moveOffset)
.Это рисует линию длинойи длиной
параллельно оси X. - Вычислите высоту треугольника,как и раньше.
- Проведите линию к направленному вниз углу треугольника,затем проведите линию обратно к началу треугольника.
- Вызовите
fill()
,чтобы заполнить треугольник. - Обновите переменные,описывающие последовательность треугольников,чтобы мы могли быть готовы нарисовать следующий.Мы уменьшаем значение
length
на 1,чтобы треугольники с каждым разом становились меньше;увеличьтеmoveOffset
на небольшую величину,чтобы каждый последующий треугольник был немного дальше,и используйте другую новую функцию,rotate()
,которая позволяет нам вращать весь холст!Мы поворачиваем его на 5 градусов,прежде чем рисовать следующий треугольник.
- Установите для
Вот оно!Окончательный пример должен выглядеть так:
На этом этапе мы хотели бы призвать вас поиграть с примером и сделать его своим!Например:
- Рисуйте прямоугольники или дуги вместо треугольников или даже вставляйте изображения.
- Играйте со значениями
length
иmoveOffset
. - Введите несколько случайных чисел,используя функцию
rand()
,которую мы включили выше,но не использовали.
Анимации
Пример цикла,который мы построили выше,был забавным,но на самом деле вам нужен постоянный цикл,который продолжает работать и работать для любых серьезных приложений холста(таких как игры и визуализация в реальном времени).Если вы думаете о своем холсте как о фильме,вы действительно хотите,чтобы дисплей обновлялся в каждом кадре,чтобы отображать обновленный вид,с идеальной частотой обновления 60 кадров в секунду,чтобы движение выглядело красивым и плавным для человеческого глаза.
Есть несколько функций JavaScript,которые позволят вам запускать функции многократно,несколько раз в секунду,для наших целей лучше всего подходит
window.запросAnimationFrame()
.Он принимает один параметр — имя функции,которую вы хотите запускать для каждого кадра.В следующий раз,когда браузер будет готов обновить экран,будет вызвана ваша функция.Если эта функция рисует новое обновление для вашей анимации,а затем снова вызываетrequestAnimationFrame()
непосредственно перед окончанием функции,цикл анимации будет продолжать выполняться.Цикл заканчивается,когда вы перестаете вызыватьrequestAnimationFrame()
или если вы вызываетеwindow.cancelAnimationFrame()
после вызоваrequestAnimationFrame()
,но до вызова кадра.Примечание:Хорошей практикой является вызов
cancelAnimationFrame()
из вашего основного кода,когда вы закончите использовать анимацию,чтобы убедиться,что никакие обновления не ожидают запуска.Браузер прорабатывает сложные детали,такие как анимация,работающая с постоянной скоростью,и не тратящая ресурсы на анимацию вещей,которые не видны.
Чтобы увидеть,как это работает,давайте еще раз быстро взглянем на наш пример Bouncing Balls(увидеть его вживую,а также посмотреть исходный код).Код цикла,в котором все движется,выглядит так:
.функция цикла(){ctx.fillStyle='rgba (0, 0, 0, 0,25)';ctx.fillRect(0,0,ширина,высота);for(пусть i=0;i
Мы запускаем функцию
loop()
один раз в нижней части кода,чтобы запустить цикл,отрисовывая первый кадр анимации;затем функцияloop()
берет на себя вызовrequestAnimationFrame(loop)
для запуска следующего кадра анимации снова и снова.Обратите внимание,что на каждом кадре мы полностью очищаем холст и все перерисовываем.Для каждого присутствующего шара мы рисуем его,обновляем его положение и проверяем,не сталкивается ли он с другими шарами.После того,как вы нарисовали графику на холсте,нет возможности манипулировать этой графикой по отдельности,как вы можете это делать с элементами DOM.Вы не можете перемещать каждый шар по холсту,потому что после того,как он нарисован,он становится частью холста,а не отдельным доступным элементом или объектом.Вместо этого вы должны стирать и перерисовывать,либо стирая весь кадр и перерисовывая все,либо имея код,который точно знает,какие части нужно стереть,и стирает и перерисовывает только минимальную необходимую область холста.
Оптимизация анимации графики — это целая область программирования,для которой доступно множество умных методов.Однако это выходит за рамки того,что нам нужно для нашего примера!
Как правило,процесс анимации холста включает следующие этапы:
- Очистите содержимое холста(например,с помощью
fillRect()
илиclearRect()
). - Сохранить состояние(при необходимости)с помощью
save()
— это необходимо,когда вы хотите сохранить обновленные настройки на холсте,прежде чем продолжить,что полезно для более сложных приложений. - Нарисуйте анимируемую графику.
- Восстановите настройки,сохраненные на шаге 2,с помощью
restore()
- Вызовите
requestAnimationFrame()
,чтобы запланировать отрисовку следующего кадра анимации.
Примечание:Мы не будем рассматривать
save()
иrestore()
здесь,но они хорошо объяснены в нашем учебнике по преобразованиям(и в последующих).Простая анимация персонажа
Теперь давайте создадим нашу собственную простую анимацию — мы заставим персонажа из одной довольно крутой компьютерной ретро-игры ходить по экрану.
- Сделайте еще одну новую копию нашего шаблона холста(1_canvas_template.html)и откройте ее в редакторе кода.Сделайте копию файла walk-right.png в том же каталоге.
- В нижней части JavaScript добавьте следующую строку,чтобы еще раз разместить начало координат в середине холста:
ctx.translate(ширина/2,высота/2);
- Теперь давайте создадим новый объект
HTMLImageElement
,установим егоsrc
на изображение,которое мы хотим загрузить,и добавим обработчик событияonload
,который вызовет срабатывание функцииdraw()
при загрузке изображения:пусть изображение=новое изображение();изображение.src='идти-право.png';image.onload=рисовать;
- Теперь мы добавим некоторые переменные,чтобы отслеживать положение спрайта,который должен быть отрисован на экране,и номер спрайта,который мы хотим отобразить.
Давайте объясним изображение таблицы спрайтов(которое мы любезно позаимствовали из книги Майка Томаса «Создание цикла обхода таблицы спрайтов с помощью CSS-анимации»).Изображение выглядит так:Он содержит шесть спрайтов,составляющих всю последовательность ходьбы — каждый имеет ширину 102 пикселя и высоту 148 пикселей.Чтобы отобразить каждый спрайт аккуратно,нам придется использоватьпусть спрайт=0;пусть posX=0;
drawImage()
,чтобы вырезать одно изображение спрайта из таблицы спрайтов и отображать только эту часть,как мы сделали выше с логотипом Firefox.Координата X среза должна быть кратна 102,а координата Y всегда будет равна 0.Размер среза всегда будет 102 на 148 пикселей. - Теперь давайте вставим пустую функцию
draw()
внизу кода,готовую к заполнению некоторым кодом: - остальная часть кода в этом разделе находится внутри
draw()
.Во-первых,добавьте следующую строку,которая очищает холст для подготовки к рисованию каждого кадра.Обратите внимание,что мы должны указать левый верхний угол прямоугольника как-(ширина/2),-(высота/2)
,потому что ранее мы указали исходную позицию какширина/2,высота/2
.ctx.fillRect(-(ширина/2),-(высота/2),ширина,высота);
- Далее мы нарисуем наше изображение с помощью drawImage — версии с 9 параметрами.Добавьте следующее:
Как видите:кар.drawImage(изображение,(спрайт*102),0,102,148,0+posX,-74,102,148);
- Указываем
изображение
как изображение для встраивания. - Параметры 2 и 3 задают левый верхний угол фрагмента,который нужно вырезать из исходного изображения,со значением X как
спрайт
,умноженным на 102(гдеспрайт
— это номер спрайта от 0 до 5)и Y значение всегда 0. - Параметры 4 и 5 задают размер вырезаемого фрагмента — 102 x 148 пикселей.
- Параметры 6 и 7 задают верхний левый угол поля,в котором нужно нарисовать срез на холсте — позиция X равна 0+
posX
,что означает,что мы можем изменить позицию рисования,изменив значениеposX
. - Параметры 8 и 9 определяют размер изображения на холсте.Мы просто хотим сохранить исходный размер,поэтому указываем 102 и 148 в качестве ширины и высоты.
- Указываем
- Теперь мы будем изменять значение спрайта
на
после каждой отрисовки — во всяком случае,после некоторых из них.Добавьте следующий блок в конец функцииdraw()
:
Мы упаковываем весь блок весли(posX%13===0){если(спрайт===5){спрайт=0;}еще{спрайт++;}}
if(posX%13===0){...}
.Мы используем оператор по модулю(%
)(также известный как оператор остатка),чтобы проверить,можно ли точно разделить значениеposX
на 13 без остатка.Если это так,мы переходим к следующему спрайту,увеличивая 90 499 спрайта 90 500(оборачиваясь до 0 после того,как мы закончили со спрайтом № 5).Фактически это означает,что мы обновляем спрайт только в каждом 13-м кадре,или примерно 5 кадров в секунду(requestAnimationFrame()
вызывает нас со скоростью до 60 кадров в секунду,если это возможно).Мы намеренно замедляем частоту кадров,потому что у нас есть только шесть спрайтов для работы,и если мы будем отображать по одному спрайту каждую 60-ю долю секунды,наш персонаж будет двигаться слишком быстро!Внутри внешнего блока мы используем операторif...else
,чтобы проверить,равно ли значениеспрайта5(последний спрайт,учитывая,что номера спрайтов идут от 0 до 5).Если мы уже показываем последний спрайт,мы сбрасываем
спрайт
обратно в 0;если нет,мы просто увеличиваем его на 1. - Далее нам нужно решить,как изменить значение
posX
в каждом кадре — добавьте следующий блок кода чуть ниже вашего последнего.
Мы используем еще один операторесли(posX>ширина/2){newStartPos=-((ширина/2)+102);posX=Math.ceil(newStartPos);console.log(posX);}еще{позХ+=2;}
if...else
,чтобы увидеть,не стало ли значениеposX
больше,чемwidth/2
,что означает,что наш персонаж вышел за правый край экрана.Если это так,мы вычисляем позицию,которая поместит символ слева от левой стороны экрана.Если наш персонаж еще не вышел за край экрана,мы увеличиваемposX
на 2.Это заставит его немного сдвинуться вправо,когда мы в следующий раз его отрисуем. - Наконец,нам нужно создать цикл анимации,вызвав
requestAnimationFrame()
внизу функцииdraw()
:window.requestAnimationFrame(draw);
Вот оно!Окончательный пример должен выглядеть так:
Простое приложение для рисования
В качестве последнего примера анимации мы хотели бы показать вам очень простое приложение для рисования,чтобы проиллюстрировать,как цикл анимации может сочетаться с пользовательским вводом(в данном случае с движением мыши).Мы не заставим вас пройти и построить это;мы просто рассмотрим наиболее интересные части кода.
Пример можно найти на GitHub как 8_canvas_drawing_app.html,и вы можете поиграть с ним ниже:
Давайте посмотрим на самые интересные части.Прежде всего,мы отслеживаем координаты мыши по осям X и Y,а также то,щелкнули мышкой или нет,с помощью трех переменных:
curX
,curY
иpress
.Когда мышь перемещается,мы запускаем функцию,установленную в качестве обработчика событийonmousemove
,которая фиксирует текущие значения X и Y.Мы также используем обработчики событийonmousedown
иonmouseup
,чтобы изменить значениеpress
наtrue
при нажатии кнопки мыши и снова наfalse
при ее отпускании.пусть curX;пусть вылечится;пусть нажато=ложь;document.onmousemove=функция(е){curX=(окно.Событие)?e.pageX:e.clientX+(document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft);curY=(окно.Событие)?e.pageY:e.clientY+(document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop);} canvas.onmousedown=функция(){нажат=истина;};canvas.onmouseup=функция(){нажат=ложь;}
Когда нажата кнопка «Очистить холст»,мы запускаем простую функцию,которая очищает весь холст обратно в черный цвет,как мы видели раньше:
clearBtn.onclick=функция(){ctx.fillStyle='rgb (0, 0, 0)';ктх.fillRect(0,0,ширина,высота);}
Цикл рисования на этот раз довольно прост — если нажато
true
,мы рисуем круг со стилем заливки,равным значению в палитре цветов,и радиусом,равным значению,установленному в поле ввода range.Нам нужно нарисовать круг на 85 пикселей выше того места,откуда мы его измерили,потому что вертикальное измерение берется из верхней части области просмотра,но мы рисуем круг относительно верхней части холста,который начинается ниже 85 пикселей в высоту.панель инструментов.Если бы мы нарисовали его,используя толькоcurY
в качестве координаты y,он оказался бы на 85 пикселей ниже положения мыши.функция рисования(){если(нажато){ctx.fillStyle=colorPicker.value;ctx.beginPath();ctx.arc(curX,curY-85,sizePicker.value,degToRad(0),degToRad(360),false);ctx.заполнить();} запросAnimationFrame(рисовать);} рисовать();
Примечание:Типы
range
иcolor
довольно хорошо поддерживаются во всех браузерах,за исключением версий Internet Explorer ниже 10;также Safari еще не поддерживаетцветов
.Если ваш браузер не поддерживает эти входные данные,они вернутся к простым текстовым полям,и вам просто нужно будет самостоятельно ввести допустимые значения цвета/числа.Пришло время оставить 2D позади и взглянуть на 3D-холст.Содержимое 3D-холста задается с помощью API WebGL,который является полностью отдельным API от API 2D-холста,несмотря на то,что оба они отображают 90 499 элементов
WebGL основан на OpenGL(открытой графической библиотеке)и позволяет напрямую взаимодействовать с графическим процессором компьютера.Таким образом,написание необработанного WebGL ближе к низкоуровневым языкам,таким как C++,чем к обычному JavaScript;это довольно сложно,но невероятно мощно.
Использование библиотеки
Из-за ее сложности большинство людей пишут код трехмерной графики,используя сторонние библиотеки JavaScript,такие как Three.js,PlayCanvas или Babylon.js.Большинство из них работают аналогичным образом,предоставляя функциональные возможности для создания примитивных и пользовательских форм,размещения камер наблюдения и освещения,покрытия поверхностей текстурами и многого другого.Они обрабатывают WebGL за вас,позволяя вам работать на более высоком уровне.
Да,использование одного из них означает изучение другого нового API(в данном случае стороннего),но это намного проще,чем кодирование сырого WebGL.
Воссоздание нашего куба
Давайте рассмотрим простой пример создания чего-либо с помощью библиотеки WebGL.Мы выберем Three.js,так как он один из самых популярных.В этом уроке мы создадим трехмерный вращающийся куб,который мы видели ранее.
- Для начала сделайте локальную копию index.html в новую папку,затем сохраните копию metal003.png в той же папке.Это изображение мы будем использовать в качестве текстуры поверхности для куба позже.
- Затем создайте новый файл с именем
main.js
снова в той же папке,что и раньше. - Если вы откроете
index.html
в редакторе кода,вы увидите,что он содержит два элемента— первый прикрепляет
three.min.js
к странице,а второй — нашосновной.js
на страницу.Вам нужно скачать библиотеку three.min.js и сохранить ее в том же каталоге,что и раньше. - Теперь у нас есть
three.js
,прикрепленных к нашей странице,мы можем начать писать JavaScript,который использует его вmain.js
.Давайте начнем с создания новой сцены — добавьте в файл main.js следующее:
Конструкторconst scene=new THREE.Scene();
Scene()
создает новую сцену,которая представляет весь трехмерный мир,который мы пытаемся отобразить. - Далее нам нужна камера,чтобы мы могли видеть сцену.С точки зрения 3D-изображения камера представляет собой положение зрителя в мире.Чтобы создать камеру,добавьте следующие строки:
Конструкторconst camera=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0,1,1000);камера.позиция.z=5;
PerspectiveCamera()
принимает четыре аргумента:- Поле зрения:ширина области перед камерой,которая должна быть видна на экране,в градусах.
- Соотношение сторон:Обычно это отношение ширины сцены к ее высоте.Использование другого значения приведет к искажению сцены(что может быть именно тем,что вам нужно,но обычно это не так).
- Ближняя плоскость:Насколько близко к камере могут быть объекты,прежде чем мы перестанем отображать их на экране.Подумайте о том,как,когда вы двигаете кончиком пальца все ближе и ближе к промежутку между глазами,в конце концов вы больше не можете его видеть.
- Дальняя плоскость:насколько далеко объекты находятся от камеры до того,как они перестанут отображаться.
- Третьим важным компонентом является визуализатор.Это объект,который визуализирует данную сцену,видимую через данную камеру.Сейчас мы создадим его с помощью конструктора
WebGLRenderer()
,но не будем использовать его позже.Далее добавьте следующие строки:
В первой строке создается новый модуль визуализации,во второй строке задается размер,при котором модуль визуализации будет отображать изображение с камеры,а в третьей строке элементconst renderer=new THREE.WebGLRenderer();визуализатор.setSize(window.innerWidth,window.innerHeight);document.body.appendChild(renderer.domElement);
,созданный модулем визуализации,добавляется к элементу
документа..Теперь все,что рисует рендерер,будет отображаться в нашем окне.
- Далее мы хотим создать куб,который будем отображать на холсте.Добавьте следующий фрагмент кода внизу вашего JavaScript:
Здесь есть еще кое-что,поэтому давайте рассмотрим это поэтапно:пусть куб;пусть загрузчик=новый THREE.TextureLoader();loader.load('metal003.png',функция(текстура){texture.wrapS=THREE.RepeatWrapping;texture.wrapT=THREE.RepeatWrapping;текстура.повторить.набор(2,2);пусть геометрия=новая ТРИ.BoxGeometry(2.4,2.4,2.4);let material=new THREE.MeshLambertMaterial({карта:текстура,затенение:THREE.FlatShading});куб=новый THREE.Mesh(геометрия,материал);сцена.добавить(куб);рисовать();});
- Сначала мы создаем глобальную переменную
cube
,чтобы иметь доступ к нашему кубу из любой точки кода. - Затем мы создаем новый объект
TextureLoader
,затем вызываем для негоload()
.load()В этом случае
принимает два параметра(хотя может принимать и больше):текстуру,которую мы хотим загрузить(наш PNG),и функцию,которая будет выполняться после загрузки текстуры. - Внутри этой функции мы используем свойства объекта
текстуры
,чтобы указать,что нам нужен повтор изображения 2 x 2,обернутый вокруг всех сторон куба.Затем мы создаем новый объектBoxGeometry
и новый объектMeshLambertMaterial
и объединяем их вMesh
для создания нашего куба.Объект обычно требует геометрии(какой он формы)и материала(как выглядит его поверхность). - Наконец,мы добавляем наш куб на сцену,затем вызываем нашу
функцию draw()
,чтобы запустить анимацию.
- Сначала мы создаем глобальную переменную
- Прежде чем мы перейдем к определению
draw()
,мы добавим пару источников света на сцену,чтобы немного оживить ее;добавьте следующие блоки:
Объектlet light=new THREE.AmbientLight('rgb(255, 255, 255)');место действия.добавить(свет);let spotLight=new THREE.SpotLight('rgb(255, 255, 255)');SpotLight.position.set(100,1000,1000);SpotLight.castShadow=истина;сцена.добавить(прожектор);
AmbientLight
представляет собой своего рода мягкий свет,который немного освещает всю сцену,подобно солнцу,когда вы находитесь снаружи.ОбъектSpotLight
,с другой стороны,представляет собой направленный луч света,больше похожий на фонарик/фонарик(или на самом деле прожектор). - Наконец,добавим нашу функцию
draw()
в конец кода:
Это интуитивно понятно;в каждом кадре мы немного поворачиваем наш куб по осям X и Y,затем визуализируем сцену так,как ее видит наша камера,затем,наконец,вызываемфункция рисования(){куб.вращение.x+=0,01;куб.вращение.у+=0,01;renderer.render(сцена,камера);запросAnimationFrame(рисовать);}
requestAnimationFrame()
,чтобы запланировать отрисовку следующего кадра.
Давайте еще раз посмотрим,как должен выглядеть готовый продукт:
Вы можете найти готовый код на GitHub.
Примечание:В нашем репозитории GitHub вы также можете найти еще один интересный пример 3D-куба — Three.js Video Cube(см.также его вживую).Здесь используется
getUserMedia()
,чтобы взять видеопоток с веб-камеры компьютера и спроецировать его на сторону куба в виде текстуры!К этому моменту у вас должно быть полезное представление об основах программирования графики с использованием Canvas и WebGL и о том,что вы можете делать с этими API,а также о том,где искать дополнительную информацию.Развлекайся!
Здесь мы рассмотрели только настоящие основы холста — так много еще предстоит узнать!Следующие статьи помогут вам в этом.
- Учебное пособие по холсту — серия очень подробных руководств,объясняющая,что вы должны знать о 2D-холсте,гораздо более подробно,чем здесь.Основное чтение.