Софт

конвас

Рейтинг: 4.0/5.0 (436 проголосовавших)

Категория: Windows

Описание

Canvas: перевод, произношение, транскрипция, примеры использования

Canvas - перевод, произношение, транскрипция существительное ▼

-  холст; парусина; брезент

canvas bag — парусиновый мешок
canvas cloth /sheet/ — брезент
canvas tank — мягкая тара
canvas belt — тех. полотняная лента (транспортёра)

- собир. паруса
- (за) грунтованное полотно
- полотно, холст; картина (маслом)
- собир. картины, живопись

-  картина, полотно (о романе, фильме и т. п.)

to fill up a canvas — чтобы дополнить картину

- канва (тж. cross-stitch canvas)
- марля
- палатка; шатёр
- шапито, передвижной цирк
-  жизнь артистов цирка

under canvas — а) воен. в палатках; б) в цирке(-шапито); в) мор. с поднятыми парусами; под парусами

глагол

- закрыть, накрыть или подбить парусиной, холстом, брезентом
- оснастить парусами
- редк. = canvass1 I и
- редк. = canvass1 I и

Словосочетания

heavy canvas — толстая парусина
woven -canvas tire  — покрышка с парусиновой основой
canvas top — брезентовый верх
canvas belting  — брезентовые ремни
bolt of canvas — рулон парусины
canvas boot  — брезентовый чехол; брезентовый кожух
canvas line brattices  — продольная вентиляционная перемычка
canvas bucket  — парусиновое ведро; брезентовое ведро
canvas cab — кабина с брезентовыми верхом и боковинами
canvas canoe  — парусиновая байдарка; парусиновое каноэ

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

Примеры

The small boat was put under canvas again.

Маленькая лодка снова была под парусами.

There was no more canvas on the ship to set.

На судне больше не осталось парусов, которые можно было бы поставить.

Примеры ожидающие перевода/одобрения

The gallery has a canvas by Paul Cezanne.

В галерее есть картина поля Сезанна.

The canvas is stretched over a wooden frame.

Холст, натянутой на деревянную раму.

'Four Women on a Bench', oil on canvas. 1991

\"Четыре Женщины на Лавочке', холст, масло. 1991

Use a canvas to cover the boat.

Использовать холст для покрытия лодке.

a carpet edged with canvas binding

ковер окаймлен холст привязки

Переводы, отмеченные , открыты для редактирования. Хотите предложить свой вариант перевода? Жмите на напротив примера.

Формы слова

конвас:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Канвас - что это такое? Особенности ткани, качество изделий и отзывы

    Канвас - что это такое? Особенности ткани, качество изделий и отзывы

    January 17, 2016

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

    История ткани

    История канваса начинается в эпоху Античности. Именно древние греки стали делать паруса из вощеного конопляного материала, который называли canuabis – «конопля».

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

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

    Канвас: обретение новой жизни

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

    Правда, сейчас этот материал существенно отличается от своего средневекового предшественника. Современный канвас – что это такое?

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

    Конечно, эту ткань нельзя назвать водоотталкивающей (она впитывает влагу), но намокает она очень медленно. К тому же, несмотря на плотность, материал хорошо пропускает воздух. И на ощупь не отличается от настоящей «холщовой» ткани.

    У канваса есть еще одно интересное качество: истираясь, он приобретает еще более привлекательный и модный вид.

    Изделия из канваса

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

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

    Сумка из ткани канвас – что это такое? Это идеальный аксессуар для делового человека, живущего динамичной, активной жизнью. А женские модели еще и не лишены элегантности и не менее стильные, чем кожаные.

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

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

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

    Но применение этой ткани не ограничивается производством чисто утилитарных вещей. Принты канвас – что это такое? Это великолепные картины и фотографии. Структура ткани позволяет нанести на нее объемный рисунок любой сложности, а своеобразная текстура создает впечатление ручной работы.

    Заслуженная популярность

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

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

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

    HTML5 CANVAS: Основы рисования на CANVAS

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

    Рисование на канве дело занятное и не сложное, так что если хочется попробовать нарисовать что-то на холсте, то это очень удачный выбор.

    Содержание:
    • Введение
    • Предварительная «настройка» нашего холста
    • Прямоугольники
    • Линии и дуги
    • Кривые Бернштейна-Безье
    • Добавим цвета
    1. Введение

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

    2. Предварительная «настройка» нашего холста

    У нашего подопытного тега есть всего два атрибута — height и width, высота и ширина соответственно, по умолчанию размер холста 150*300 пикселей. Стоит отметить что canvas создает область фиксированного размера содержимым которого управляют контексты.

    Элементарный пример:

    Если сохранить эти строки в файл с расширением htm (или html, что по сути одно и тоже), и открыть его браузером, то можно будет увидеть область с чёрным прямоугольником, так вот это и есть тот самый холст, на котором нарисован прямоугольник размеры которого равны размерам canvas'а.

    3. Прямоугольники

    Самой элементарной фигурой которую можно нарисовать является прямоугольник. Предусмотрено три метода для отрисовки прямоугольников каждому из которых передаётся четырые параметра (x, y, width, height), которые представляют из себя координаты и размеры прямоугольника.

    Пример иллюстрирующий работу этих функций:
    1. В строках 10 и 11 мы изменили размер холста — чтоб бы задуманное нами изображение полностью отобразилось;
    2. В строках 12 и 13 мы нарисовали два не закрашенных прямоугольника которые будут символизировать своеобразную рамку нашей «шахматной доски»;
    3. В строке 14 отрисовываем закрашенный прямоугольник размеры которого бы позволил вместить в себе 64 квадрата с шириной стороны 32 пикселя;
    4. В строках с 15 по 19 у нас работает два цикла которые очищают на чёрном прямоугольнике квадратные области в таком порядке что бы в итоге полученное изображение было похоже на шахматную доску.
    4. Линии и дуги

    Рисование фигур составленных из линий выполняется последовательно в несколько шагов:

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

    Пример ниже показывает действие всего описанного:
    1. В строке 14 заливается цветом дуга;
    2. В строке 22 обводится контур нашей короны.
    5. Кривые Бернштейна-Безье

    Что такое кривые Безье я думаю лучше объяснит Википедия. Нам доступно две функции, для построения кубической кривой Бизье и квадратичной, соотвестствено:

    x и y это точки в которые необходимо перейти, а координаты P(Px, Py) в квадратичной кривой это дополнительные точки которые используются для построения кривой. В кубическо кривой соответственно две дополнительные точки.

    Пример двух кривых: 6. Добавим цвета

    Что бы наше изображение было не только двух цветов, а любого цвета предусмотрено, два свойства:

    Аналогичным образом задаётся и цвет для линий.

    Возьмём пример с шахматной доской и добавим в него немного цвета:

    Canvas в двух словах

    06.07.2013 18:20 Сергей Семенов 0 Комментарии

    Научиться работать с тегом html5 “Canvas” (что переводится как «Холст») достаточно просто, хотя, конечно, без знания основ работы с html и javascript не обойтись. Цель данной статьи – не развернутый курс по работе с canvas, а краткое введение для начинающих, после которого, пользуясь справочной информацией вроде приведенных здесь шести статей вы сможете адекватно ориентироваться в нем и работать с ним.

    Чтобы понять, насколько проста работа с canvas, не поленимся создать пустой html-файлик и разместим в нем следующий код:

    Запустив файл, вы получите на экране некое подобие шедевра Малевича. Откуда же оно берется? Пропустив информацию по базовым html-тегам, перейдем сразу к главному:

    Тег canvas создает на странице новый элемент – холст для рисования. От нас требуется задать размеры этого холста (атрибуты width и height – ширина и высота), а также задать id, через который мы будем к нему обращаться. Холст готов для рисования, но пока пуст.

    Рисование, естественно, происходит командами js. Как мы видим, их потребовалось всего три. В первой строке происходит присваивание переменной mycvs объекта холста HTMLCanvasElement (определение которого происходит как раз по id, ибо их (канвасов) на странице может быть много). Во второй – присваиваем переменной myctxt, с которой теперь и будем в основном работать, контекста рисования данного холста. Далее начинается само рисование. Как нетрудно догадаться, метод fillRect рисует на заданном холсте прямоугольник с указанными координатами (первые два параметра) и указанных размеров (следующие два).

    Как мы видим, мы получили в результате два слипшихся квадрата, наложенных один на другой. И так каждый новый элемент будет раз за разом накладываться на предыдущие, конечно, оставаясь в рамках холста, так как все выходящее за его рамки, заданные в самом теге canvas атрибутами размеров width и height, отображаться не будет.

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

    Для анимации, реализуемой, как правило, через метод setInterval, предусмотрены такие методы, как метод очистки куска холста для перерисовки clearRect (с теми же параметрами, что и для рисования квадрата), методы сохранения состояния холста и его восстановления save() и restore(). а также, например, методы, отвечающие за вращение или трансформирование: rotate и transform .

    Но, естественно, существенный момент для Web-графики – это вывод на холст изображений. Вот тут остановимся поподробнее. Делается это методом drawImage. однако требует чуть большей подготовки, чем рисование квадрата. Во-первых создадим объект javascript изображение (можно дописать после вышеприведенного примера):

    После того, как изображение загрузится из указанного файла, оно будет выведено на холст в точке с координатами 0, 0. Соответственно, координаты можно изменить. Можно также добавить методу еще два параметра – ширину и высоту выводимого изображения: myctxt.drawImage(myImg, 0, 0, 150, 80). Параметров может быть также девять: myctxt.drawImage(myImg, 10, 10, 150, 80, 0, 0, 150, 80). В этом случае первые четыре параметра, следующие за переменной myImg описывают фрагмент изображения, который будет выводиться (т.е. оно выводится не целиком), а следующие четыре – место на холсте, куда он будет выводиться.

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

    source-over – новая фигура накладывается на старую (по умолчанию)

    source-in – отображается только часть новой фигуры, совпадающая со старой. Остальная часть новой фигуры и старая фигура не выводятся

    source-atop – аналогично предыдущему, но старая фигура также выводится, происходит только обрезка новой

    destination-over – наложение старой фигуры поверх новой

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

    Предусмотрена в канвасе и маска – clip() – но, увы, маской в данном случае может являться только геометрическая фигура, созданная самим канвасом, а не свободное изображение.

    И последнее, о чем сегодня стоит упомянуть – это полезное свойство канваса, позволяющее превратить результаты нашего рисования обратно в изображение. Для этого существует метод toDataURL. Он возвращает из указанного холста (ВНИМАНИЕ – холста, т.е. mycvs а не myctxt в нашем примере) данные изображения, выстроенные в виде интернет-адреса (по умолчанию, если не заданы параметры, говорящие об ином, изображение рассматривается как png). Т.е. выводим данные из объекта холста:

    Вот и все. Надеюсь полученных данных вам хватит для начала ознакомления с тегом html-5 canvas, ибо оно того стоит а познаний требует не столь уж масштабных – по сути для первичного ознакомления с ним хватит дня, остальное придет в процессе. Удачных вам экспериментов!

    10 крутых примеров работы HTML5 Canvas

    10 крутых примеров работы HTML5 Canvas

    Холст — интересная особенность в HTML5 Canvas которая позволяет рисовать разнообразные вещи в браузере с помощью технологии Java. Например его можно использовать для управления фотографий, рисовать и анимировать разнообразные формы и фигуры, а так же воспроизводить видео. Но это ещё далеко не придел.

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

    Радужный дождь

    Действительно удачный пример анимации работающей на HTML5 Canvas, как будто с неба льёт радужный дождь. Очень красиво смотрится.

    Частицы

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

    Анимированные круги

    Интересный и не сильно сложный эффект работающий на HTML5 Canvas. Тут несколько кругов, которые плавно меняют свою форму, таким образом получается красивый визуальный эффект.

    Геометрическая анимация

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

    Анимационные шары

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

    Созвездие

    Тут созданы случайно двигающиеся звёзды, а при наведении мыли они соединяются линиями. Очень красиво сделанное демо.

    Молния

    Отличная и удачная имитация молнии с помощью HTML5 Canvas. Смотрится очень достойно и потрясающе!

    Радужный осьминог

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

    Найди курсор

    Этот пример отслеживает расположение курсора указывая на него стрелками

    Механическая трава

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

    Введение в canvas: продвинутые техники рисования

    Введение в canvas: продвинутые техники рисования

    Хотите быстро изучить JavaScript и jQuery?

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

    За счет получения информации сразу по двум каналам (зрение и слух) эффективность обучения значительно превосходит обучение по книгам. А домашние задания и онлайн-тесты позволят вам постоянно думать на изучаемом языке и сразу проверять свои знания!

    Более 100 видеоуроков на одном DVD.

    Видеокурс "HTML с нуля"

    Если вы давно хотите как следует изучить HTML, то у меня для Вас есть отличная новость!

    Вы можете совершенно бесплатно получить полноценный курс по HTML из моего платного сборника. 33 видеоурока от Евгения Попова!

    Видеокурс "CSS с нуля"

    Если вы уже изучили HTML и хотите двигаться дальше, то следующим шагом будет изучение технологии CSS.

    Так же, как и в случае с HTML, вы можете совершенно бесплатно получить полноценный курс по СSS из моего платного сборника. Вас ждет 45 подробных видеоуроков от Евгения Попова!

    Видеокурс "Домен и хостинг"

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

    Получать новые уроки на E-mail:

    HTML5 Canvas: первое знакомство

    HTML5 Canvas: первое знакомство

    Сегодня я хотел бы начать рассмотрение HTML5 canvas — встроенной возможности современных браузеров для работы с растровой графикой.

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

    В этой статье я расскажу, что такое canvas. как он работает, и покажу как рисовать простые фигуры, менять цвета и стирать нарисованное.

    Поддержка браузерами

    Все современных браузеры, включаю Internet Explorer 9, поддерживают canvas:

    Стоит заметить, что основную функциональность canvas можно использовать и в IE 8 и младше с помощью плагина Explorer Canvas .

    Архитектура canvas

    С одной стороны, canvas это всего лишь HTML5 тег с указанными размерами и каким-то id (для обращения к элементу в дальнейшем):

    После этого вы получите место (прозрачный холст) указанных размеров на странице, в котором в дальнейшем можно будет что-то рисовать. Обратите внимание, что указывать размеры canvas необходимо через аттрибуты тега width и height. Если вы укажите размеры через CSS, то пропорции элементов внутри canvas будут искажены.

    С другой стороны, указанный тег — только часть технологии. Все операции происходят в так называемом двумерном контексте (2D Rendering Context), который содержится в каждом теге <canvas>. По сути, двумерный контекст — это прямоугольная система координат:

    Единица измерения — один пиксел. Для работы с двумерным контекстом, и, соответсвенно, выполнения операций по рисованию, необходим JavaScript.

    Начало работы

    Для начала нам необходимо подключить плагин Explorer Canvas для IE < 9. Затем, когда загрузился DOM, необходимо определить двумерный контекст:

    Ну вот, теперь можно и рисовать!

    Рисование с помощью canvas
    Настройки цвета и размера

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

    По умолчания canvas рисует и заливает черным цветом. За цвет и стиль обводки отвечает strokeStyle. а за заливку — fillStyle. Давайте укажем, что мы хотим красный цвет (#FF0000) и толщину в 3 пиксела для обводки и зеленый цвет (#00FF00) для заливки:

    Прямоугольники

    В canvas есть два вида прямоугольников — залитые и незалитые (обводка). Залитый прямоугольник рисуется с помощью метода fillRect(x, y, width, height) :

    А незалитый — strokeRect(x, y, width, height) :

    Линии

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

    В отличии от рисования прямоугольников, рисование линий это не одна команда, а их последовательность. Так, сначала надо объявить начало новой линии с помощью beginPath(). а в конце сказать от том, что рисование линии заканчивается с помощью closePath() .

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

    Теперь перейдем к полигонам.

    Полигоны

    Полигон — замкнутый набор отрезков. Попробуем нарисовать и залить цветом прямоугольный треугольник (с помощью команды fill() ):

    Окружности

    Окружности рисуются с помощью команды arc(ox, oy, radius, startAngle, endAngle, antiClockWise). где ox и oy — координаты центра, radius — радиус окружности, startAngle и endAngle — начальный и конечный углы (в радианах) для отрисовки окружности, а antiClockWise — направление движения при отрисовке ( true для против часовой стрелке, false — против). Нетрудно сделать вывод, что с помощью arc() можно рисовать как круги и окружности, так и дуги и части окружности.

    Давайте сделаем сначала окружность радиуса 100 пикселов:

    А потом круг радиусом 120 пикселов:

    Очистка canvas

    Очистить весь холст или его часть можно с помощью команды clearRect(x, y, width, height). указав нужные размеры и положение очищаемой области:

    На этом на сегодня все. Если есть вопросы — пишите в комментариях к статье. Так же мне было бы интересно узнать, где вы уже применяли или собираетесь применить canvas в своих проектах? Есть ссылки — в комментарии!

    Автор: Павел Марковнин

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

    Иногда пишет в Твиттер. но чаще на Временно.нет.

    Расскажите друзьям

    Еще одно отличное место
    под рекламу для веб-разработчиков.
    Разместить баннер !

    Комментарии — 22

    Вспомнился Basic :) # 28 марта 2011 rihh И это все.
    Не смешите.
    у canvas много фич, к примеру: прозрачность, z-index двух canvas, толщина, вид конца или изгиба линии, тень, градиент, манипуляции с IMG. и это еще не весь список.
    P.S. Статья похожа на галимый копипас # 28 марта 2011 AS3 Оооочень похоже на статью
    “Canvas From Scratch: Introducing Canvas”

    Я ее кстати уже переводил, почти месяц назад:
    Canvas. Введение # 28 марта 2011 s7at1c а где пример или результат? # 28 марта 2011 intero AS3, это вступительная статья для тех, кто не знает, что такое canvas. Про это написано в заголовке и вступлении.

    Я знаю, что у canvas много фич, но нет смысла начинать знакомство с чем-то с конца.

    Да, статья похожа на статью с Nettuts, но только частью рассматриваемых методов и элементов. В моей статье более корректный и кроссбраузерный код (подключение excanvas и проверка на понимание 2D context). # 28 марта 2011 Grin Ничё так то ,что Canvas не для растровой, а для векторной графики, да?
    # 28 марта 2011 SurRealistik SurRealistik, canvas это как раз растровая графика (bitmap), а векторная это SVG. # 28 марта 2011 Grin а есть ли возмжность в canvas добавлять изображения? # 28 марта 2011 KELiON KELiON, конечно есть, но я расскажу об этом в следующей статье. # 28 марта 2011 Grin Здравствуйте.
    Извиняюсь за дикий офтоп, а где раздел FAQ?
    Я тут на днях подумал что хочу сделать шторку как на ютюбе .
    Как её реализовать не подскажите. )
    # 28 марта 2011 Денис Денис, есть раздел вопросов и ответов. спросите там. # 28 марта 2011 Grin (true для против часовой стрелке, false — против) # 29 марта 2011 Вано Отличная статья!
    Буквально висит задача, сделать обратные закругленные углы (огрызки). Знаю что можно картинку засунуть в canvas и очистить с помощью 4 овалов, расположив их по углам. Но все испытания потерпели крах. Может подскажете как решить проблему? # 31 марта 2011 Дмитрий Я уже закончил его и во всю применяю и перешел к WebGL.
    Во всяком случае сейчас больший интерес представляет тот момент, что современные браузеры наносят крупный удар по таким пакетам как jQuery и им подобным - вставляя множество их сервисов во внутренние скрипты. К примеру знаменитый query-селектор уже исполняет не только все выборки из серии jQuery? но и так же поддерживает теги с нэйм-спайсом, что делать скрптмайкеры пока не могут, А их знаменитая анимация - уже стала стандартом CSS3 - # 1 мая 2011 Александр и еще один момент я бы добавил
    лучше бы если указывается не только FireFox, но и все другие продукты от Mozilla, а их там много и все они тоже поддерживают тэг canvas. Поэтому корректнее было бы писать что это Gecko 1.9+. # 1 мая 2011 Александр Все пытаюсь начать изучение 5-й версии а тут ваша статья. Спасибо! # 4 мая 2011 Артем Шикарная статья! # 21 июля 2011 Andrey Статья отличная! Все понятно написано, спасибо! # 13 августа 2011 MICTEP Вот так хотя-бы, чтобы было видно треугольник

    ctx.beginPath();
    ctx.moveTo(50, 50);
    ctx.lineTo(50, 250);
    ctx.lineTo(250, 250);
    ctx.closePath();
    ctx.stroke(); # 17 апреля 2013 Zar как очистить канвас от картинки, которая создавалась с помощью джаваскрипт new image()? не с помощью клеар рект # 10 февраля 2015 mysqld.exe Очень хорошая статья, а можете рассказать про тег аудио и видео? Это же так интересно, читать то, что уже написали 6 млн школьников, взяв информацию с какого нибудь достойного сайта про HTML или из документации. # 24 октября 2015 сергей пример с canvas http://siteacademy.ru/index.php/css/53-html5-image-effects-hdr-simulation # 1 декабря 2015 Михаил

    Новый комментарий

    Рисование 2D графики в окне программы

    Android framework API предоставляет набор классов для плоского рисования на экране приложения, которые позволяют Вам нарисовать любую графику и текст, или модифицировать имеющиеся представления View согласно Вашим пожеланиям и чувствам. Когда рисуете 2D -графику, обычно это делают двумя способами:

    a. Рисование графики или анимации в пределах объекта View, находящегося на разметке окна программы (layout ). В этом случае рисование графики обрабатывается системой по обычной иерархии процесса рисования View — Вы просто задаете нужные графические представления внутри View.
    b. Рисование графики напрямую на экране программы как на холсте (на Canvas ). В этом случае Вы персонально вызываете подходящий метод класса onDraw () (передавая ему Ваш Canvas), или одним из методов Canvas, начинающимся на draw. () (наподобие drawPicture()). При этом Вы также контролируете любую анимацию.

    Опция "a", рисование в View, является лучшим выбором, когда Вы хотите нарисовать простые графические объекты, которые не нужно динамически изменять, и которые не являются частью требовательной к быстроте прорисовки игры. Например, Вы должны рисовать Вашу графику в View, когда хотите отобразить статическую графику или заранее предопределенную анимацию в некотором статическом приложении. Для получения подробностей см. ниже раздел "Рисуемые объекты (Drawables)".

    Опция "b", рисование на Canvas, лучше подходит, когда Ваше приложение требует регулярной собственной перерисовки. Приложения наподобие видеоигр должны самостоятельно рисовать на Canvas. Однако есть несколько способов такого рисования:

    • В том же самом потоке, который обрабатывает UI Activity приложения, где Вы создаете пользовательское представление View в Вашей разметке окна (layout), вызываете invalidate() и затем обрабатываете обратный вызов onDraw() .
    • Или в отдельном потоке, где Вы обрабатываете SurfaceView и выполняете рисование на Canvas так быстро, как позволяет Ваш поток (в этом случае не нужно запрашивать invalidate()).

    [Рисование с помощью Canvas ]

    Когда Вы пишете приложение, которое должно выполнять отрисовку некоторой специализированной графики и/или управлять некоторыми сложными графическими анимациями (игра), это следует делать с помощью Canvas. Canvas работает для Вас как специальный интерфейс, символизирующий реальную поверхность, на которой вы будете рисовать — он содержит в себе все нужные методы для рисования (их названия начинаются на "draw"). С помощью Canvas Ваше рисование в действительности происходит на нижележащую растровую картинку (Bitmap), которая размещена на экране программы.

    В событии (event), где Вы рисуете что-то в теле метода обратного вызова onDraw(), Canvas предоставляется Вам для рисования, Вам только нужно разместить картинку на нем вызовами подпрограмм для рисования. Вы также можете получить Canvas из SurfaceHolder.lockCanvas(). когда работаете с объектом SurfaceView (оба этих сценария будут рассмотрены далее). Однако, если Вам нужно создать новый Canvas, то Вы должны определить поверхность Bitmap, на которой реально будет происходить рисование. Bitmap всегда требуется для Canvas. Вы можете установить новый Canvas примерно так:

    Теперь Ваш Canvas будет рисовать на заданной картинке Bitmap. После рисования вместе с Canvas Вы можете перенести Вашу картинку Bitmap на другой Canvas одним из методов Canvas.drawBitmap(Bitmap. ). Это рекомендуется, если Вы рисуете конечную графику через Canvas, предоставленный Вам в View.onDraw() или SurfaceHolder.lockCanvas() (см. это в последующих секциях).

    Класс Canvas имеет свои собственные методы рисования, которые Вы можете использовать, наподобие drawBitmap(. ), drawRect(. ), drawText(. ) и многие другие. Другие классы, которые Вы можете использовать, также имеют методы draw(). Например, у Вас возможно будут некоторые Drawable-объекты, который захотите поместить на Canvas. Drawable имеет свой собственный метод draw(), который получает Ваш Canvas как аргумент.

    Если Ваша программа не требует большой частоты перерисовки кадров (к примеру это игра в шахматы, змейка, или другая программа, которая имеет только медленные анимации), то Вы можете рассмотреть вариант с созданием компонента пользовательского вида (custom View), с рисованием на Canvas в методе View.onDraw(). Самый удобный вариант задействовать предоставляемый фреймворком Android предопределенный Canvas, в котором Вы разместите свои вызовы методов для рисования.

    Чтобы начать, расширьте класс View (или произведите от него дочерний) и определите метод обратного вызова onDraw(). Этот метод будет вызван фреймворком Android framework для запроса перерисовки View самого себя. В этом месте будут все Ваши вызовы рисования на Canvas, который будет передан через обратный вызов onDraw().

    Фреймворк Android будет вызывать onDraw() только при необходимости. Каждый раз, когда Ваше приложение будет подготовлено к отрисовке, Вы должны запросить View стать недействительным вызовом invalidate(). Это показывает, что нужно перерисовать View, и Android сделает вызов onDraw() (хотя не гарантируется, что обратный вызов будет исполнен немедленно).

    Внутри метода onDraw() Вашего компонента View используйте предоставленный Вам Canvas для всех отрисовок, используя многочисленные методы Canvas.draw. () или другие методы draw() класса (Canvas передается в виде аргумента). Как только Ваш onDraw() завершится, фреймворк Android будет использовать Ваш Canvas для отрисовки Bitmap с обработкой на уровне системы.

    Примечание: чтобы сделать запрос перерисовки invalidate из другого потока, не из главного потока активности (main Activity thread), Вы должны вызвать postInvalidate().

    Для дополнительной информации по расширению класса View прочитайте руководство Building Custom Components .

    Для примера приложение см. игру змейка (Snake game), находящуюся в папке примеров из SDK: < your-sdk-directory >/samples/Snake/ .

    [Рисование на SurfaceView ]

    SurfaceView является специальным подклассом View, который предоставляет выделенную поверхность рисования в пределах иерархии View. Цель состоит в том, чтобы предоставить эту вторичную поверхность рисования второму потоку, чтобы приложению не требовалось ждать, пока системная иерархия View будет готова к отрисовке. Вместо этого второй поток, который имеет ссылку на SurfaceView, может рисовать в своем Canvas и в своем темпе.

    Чтобы начать, нужно создать новый класс, который расширяет (extends) класс SurfaceView. Класс должен реализовать SurfaceHolder.Callback. Этот подкласс является интерфейсом, который уведомит Вас о событиях нижележащей поверхности, таких как создание, изменение или уничтожение. Эти события важны для того, чтобы Вы знали, когда можно начать рисовать, нужно ли внести изменения на основе новых свойств поверхности, и когда нужно остановить рисование и потенциально прибить некоторые задачи. Хорошим решением будет также определить внутри Вашего класса Ваш класс второго потока Thread, который будет выполнять все процедуры рисования на Вашем Canvas.

    Вместо того, чтобы напрямую обрабатывать объект поверхности Surface, Вы должны делать это через SurfaceHolder. Когда Ваш SurfaceView проинициализирован, получите SurfaceHolder вызовом getHolder(). Затем Вы должны оповестить SurfaceHolder, что хотите принимать методы обратного вызова SurfaceHolder (из SurfaceHolder.Callback) путем вызова addCallback(). Затем перезадайте каждый из методов SurfaceHolder.Callback внутри Вашего класса SurfaceView.

    Чтобы рисовать на Surface Canvas из второго потока, Вы должны передать потоку ваш SurfaceHandler и получить Canvas вызовом lockCanvas(). Теперь Вы можете взять Canvas, предоставленный Вам SurfaceHolder, и сделать на нем все нужные отрисовки. Как только Вы завершили рисовать вместе с Canvas, вызовите unlockCanvasAndPost(), передав при этом Ваш объект Canvas. Теперь Surface перерисуется в соответствии с оставленным Вами Canvas. Каждый раз, когда нужно перерисовать, выполняйте эту последовательность захвата (locking) и освобождения (unlocking) Canvas.

    Примечание: на каждом проходе получения Canvas от SurfaceHolder будет возвращено предыдущее состояние Canvas. Чтобы правильно анимировать графику, Вы должны перерисовать всю поверхность. Например, Вы можете очистить предыдущее состояние Canvas путем заливки цветом с drawColor() или установкой фоновой картинки с drawBitmap(). Иначе Вы увидите ранее выполненные отрисовки.

    Для примера приложения см. игру Lunar Lander в каталоге примеров из SDK: < your-sdk-directory >/samples/LunarLander/ .

    [Рисуемые объекты (Drawables) ]

    Android предоставляет отдельную библиотеку 2D-графики для рисования фигур и картинок. В пакете android.graphics.drawable можно найти общие классы, используемые для рисования в двух измерениях. В этом разделе обсуждаются базовые основы использования объектов Drawable, чтобы рисовать графику, и как использовать связанные подклассы класса Drawable. Для дополнительной информации как делать покадровую анимацию с помощью Drawable см. [2].

    Drawable является главной абстракцией для "чего-нибудь, что можно нарисовать". Вы обнаружите, что класс Drawable был расширен для определения различных видов рисуемой графики, включая BitmapDrawable, ShapeDrawable, PictureDrawable, LayerDrawable и некоторых других. Конечно, Вы также можете расширить их для того, чтобы определить собственные Drawable-объекты, которые будут работать уникальным образом.

    Есть 3 способа определить и задействовать Drawable:

    1. Использовать картинку, сохраненную в ресурсах проекта.
    2. Использовать файл XML, который будет задавать свойства Drawable.
    3. Использовать традиционные конструкторы класса.

    Ниже будут обсуждаться первые две техники (использование конструкторов не представляет собой ничего нового для опытного разработчика).

    [Создание графики из ресурсов картинок ]

    Простой способ добавить графику в приложение - обращаться к файлу картинки, который сохранен в ресурсах проекта. Поддерживаются форматы PNG (рекомендуемый формат), JPG (допустимый формат) и GIF (этот формат использовать не рекомендуется). Эта техника использования картинок предпочтительна для иконок приложения, логотипов, или других растровых графических изображений, которые могут использоваться в игре.

    Чтобы использовать ресурс изображения (image resource), просто добавьте файл картинки (файл с расширением .png. jpg или .gif) в каталог res/drawable/ Вашего проекта. С этого момента Вы можете обращаться к этому изображению из кода Java или из разметки XML. В любом случае доступ осуществляется на основе числового идентификатора ресурса (resource ID), который создается на основе имени файла без расширения. Например, к файлу my_image.png можно обращаться по идентификатору my_image. Подробнее про предоставление ресурсов и получение к ним доступа см. [4, 5].

    Примечание: ресурсы изображений, размещенные в res/drawable/, могут быть автоматически оптимизированы сжатием без потерь (lossless image compression) утилитой aapt во время процесса сборки. Например, true-color PNG, не требующий большего количества цветов, чем 256, может быть преобразован в 8-bit PNG с цветовой палитрой. В результате получится картинка того же самого качества, но она займет меньше места в памяти. Поэтому имейте в виду, что бинарные изображения, размещенные в этой директории, во время сборки приложения могут изменить свой размер. Если вместо этого Вы планировали читать картинки в виде потока бит, то преобразуйте их в папку res/raw/. где изображения не будут оптимизированы.

    Следующие куски кода демонстрируют, как построить ImageView, использующий картинку их ресурсов drawable, и как добавить её в разметку интерфейса программы (layout).

    В других случаях Вы можете обрабатывать Ваш ресурс изображения (image resource) как объект Drawable. Чтобы сделать это, создайте Drawable из ресурса примерно так:

    Примечание: каждый уникальный ресурс в Вашем проекте может поддерживать только одно состояние, независимо от того, сколько разных объектов Вы создадите из него. Например, если Вы создадите два Drawable-объекта из одного и того же ресурса картинки, затем поменяете свойство (такое как alpha) для одного из этих Drawable, то это также повлияет и на другого. Поэтому когда имеете дело с несколькими экземплярами ресурса изображения, то вместо прямого трансформирования Drawable Вы должны выполнить tween animation [см. 3].

    Кусок кода XML ниже показывает, как добавить ресурс Drawable к ImageView в XML layout (для забавы с некоторым красным оттенком).

    Дополнительную информацию по типам ресурсов и их использованию см. в [3, 4, 5].

    [Создание графики из ресурса XML ]

    Теперь Вы познакомились с принципами оформления интерфейса пользователя программы Android. Таким образом, Вы понимаете мощь и гибкость, свойственную определению объектов в XML. Эта философия переносится и на классы View, как и на Drawable. Если есть некий объект Drawable, который Вы хотите создать, то начальные значения свойств объекта можно задать не только в коде приложения через переменные, но и в путем определения Drawable в XML, что является хорошим решением. Даже если Вы ожидаете, что Ваш Drawable изменит свои свойства в результате взаимодействия с пользователем в приложении, Вы должны рассмотреть определение объекта в XML, поскольку в дальнейшем Вы все равно можете менять его свойства после создания экземпляра объекта.

    Когда Вы определили Drawable в XML, сохраните его файл в каталоге res/drawable/ Вашего проекта. Затем запросите и создайте объект вызовом Resources.getDrawable(). передав ему resource ID от Вашего файла XML (пример см. ниже).

    Любой подкласс Drawable, который поддерживает метод inflate(), может быть задан в XML и его экземпляр может быть получен в приложении. Каждый Drawable, который поддерживает XML inflation, утилизирует специальные атрибуты XML, которые помогают задать свойства объекта - см. документацию на класс, чтобы получить информацию по этим атрибутам. Также см. документацию на каждый подкласс Drawable для получения информации, как его определить в XML.

    Вот пример файла XML, который определяет TransitionDrawable:

    С этим XML, сохраненным в файл res/drawable/expand_collapse.xml, следующий код создает экземпляр TransitionDrawable и устанавливает его как содержимое ImageView:

    Затем этот переход (transition) может быть запущен вперед (на одну секунду):

    Дополнительную информацию по поддерживаемым атрибутом вышеперечисленных классов Drawable см. в их документации.

    [Рисуемая фигура (Shape Drawable) ]

    Когда Вам нужно динамически нарисовать какую-нибудь двухмерную графику, то возможно объект ShapeDrawable то, что Вам нужно. С ShapeDrawable, Вы можете программно рисовать примитивные фигуры и задать им всевозможные стили.

    ShapeDrawable является расширением от Drawable, так что его можно использовать везде, где ожидается Drawable — возможно для заднего фона View, что можно сделать вызовом setBackgroundDrawable(). Конечно, Вы также можете рисовать фигуры и использовать их как custom View, чтобы добавить в разметку интерфейса приложения (layout) так, как пожелаете. Поскольку ShapeDrawable имеет собственный метод draw(), Вы можете создать подкласс View, который рисует ShapeDrawable в методе View.onDraw(). Здесь приведен базовый пример расширения класса View, который рисует ShapeDrawable как View:

    В конструкторе ShapeDrawable задан как OvalShape. Затем устанавливается цвет и границы фигуры. Если Вы не установите границы, то фигура не будет нарисована, и если не установите цвет, то по по умолчанию фигура будет черной.

    С заданным custom View он может быть отрисован любым способом, который Вам нравится. Вышеприведенный пример фигуры может быть отрисован программно в Activity:

    Если Вы хотите рисовать этот пользовательский рисунок из XML вместо того, чтобы это делать в из Activity, то класс CustomDrawable должен перезадать конструктор View(Context, AttributeSet), который вызывается при создании объекта, заданного из XML. Затем добавьте элемент CustomDrawable в XML, примерно так:

    Класс ShapeDrawable (как и многие другие типы Drawable в пакете the android.graphics.drawable) позволяют Вам задать различные свойства рисуемых фигур через публичные методы. Вы можете захотеть подстроить некоторые свойства, включая alpha transparency (прозрачность), color filter (фильтрация цвета), dither (дизеринг), opacity (непрозрачность) и цвет.

    Вы также можете с использование XML задать примитивные отрисованные фигуры. Для дополнительной информации см. [3], описание типа ресурса Shape Drawable.

    Графика NinePatchDrawable является растягиваемой растровой картинкой (bitmap image), размер которой Android автоматически изменит, чтобы она соответствовала содержимому View, в котором она размещена в качестве фона (background). Пример использования NinePatch - фон для стандартных кнопок (button) Android — кнопки должны растягиваться, чтобы разместить в себе строки различной длины. NinePatch drawable - это стандартная картинка PNG, которая включает в себя дополнительный бордюр шириной в 1 пиксел. NinePatch drawable должен быть сохранен в файл с расширением .9.png, в каталог res/drawable/ Вашего проекта.

    Бордюр используется для задания растягиваемой и статической областей картинки. Вы показываете растягиваемую секцию путем рисования одной (или большего количества) 1-пиксельной по толщине линии (или линий) в левой и верхней части бордюра (другие пикселы бордюра должны быть полностью прозрачными или белыми). Вы можете иметь столько растягиваемых секций, сколько захотите: их относительные размеры останутся теми же самыми, так что самые большие секции так и останутся самыми большими.

    Вы также можете определить опциональную drawable-секцию изображения (обычно для дополнительных строк, padding lines) путем рисования линии справа и внизу. Если объект View установит NinePatch в качестве фона (background) и затем укажет свой текст, то он View сам растянется так, чтобы текст уместился в обозначенные линиями области справа и внизу (если эти линии есть). Если padding lines не заданы, то Android будет использовать линии слева и вверху для определения рисуемой области.

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

    Вот пример файла NinePatch для определения кнопки:

    Этот NinePatch задает одну растягиваемую область с левой и верхней линиями, и рисуемую область нижней и правой линиями. На верхней картинке серым пунктиром показаны регионы картинки, которые будут реплицированы при растягивании изображения. Розовый прямоугольник на нижней картинке показывает область, в которой разрешено размещение содержимого View. Если содержимое не поместится в этот регион, то изображение будет растянуто, пока содержимое не поместится.

    Инструмент Draw 9-patch tool предоставляет очень удобный путь для создания изображений NinePatch, используя редактор WYSIWYG. Он даже выдает предупреждения, если заданный Вами регион для растягиваемой области создает риск для создания артефактов в результате реплицирования пикселов.

    Здесь приведен пример layout XML, который демонстрирует, как добавить картинку NinePatch для набора кнопок (картинка NinePatch сохранена в файл res/drawable/my_button_background.9.png).

    Обратите внимание, что ширина width и высота height установлены в значение "wrap_content" для того, чтобы кнопка по размеру подходила содержащемуся в ней тексту. Ниже показано, как выглядят две кнопки, которые отрисованы из XML и картинки NinePatch, показанной выше. Обратите внимание, как ширина и высота кнопки меняются в зависимости от текста, и как растягивается фоновая картинка, чтобы разместить текст.