Заливка замкнутой области


Содержание

ЗАЛИВКА ОБЛАСТИ С ЗАТРАВКОЙ

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

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

По способу задания области делятся на два типа:

· гранично-определенные, задаваемые своей (замкнутой) границей такой, что коды пикселов границы отличны от кодов внутренней, перекрашиваемой части области. На коды пикселы внутренней части области налагаются два условия — они должны быть отличны от кода пикселов границы и кода пиксела перекраски. Если внутри гранично-определенной области имеется еще одна граница, нарисованная пикселами с тем же кодом, что и внешняя граница, то соответствующая часть области не должна перекрашиваться;

· внутренне-определенные, нарисованные одним определенным кодом пиксела. При заливке этот код заменяется на новый код закраски.

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

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

Важно отметить, что для 4-х связной прямоугольной области граница 8-ми связна (рис. а) и наоборот у 8-ми связной области граница 4-х связна (см. рис. б). Поэтому заполнение 4-х связной области 8-ми связным алгоритмом может привести к «просачиванию» через границу и заливке пикселов в примыкающей области.

В общем, 4-х связную область мы можем заполнить как 4-х, так и 8-ми связным алгоритмом. Обратное же неверно. Так область на рис. а мы можем заполнить любым алгоритмом, а область на рис. б, состоящую из двух примыкающих 4-х связных областей можно заполнить только 8-ми связным алгоритмом.

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

0.5.1 Простой алгоритм заливки

Рассмотрим простой алгоритм заливки гранично-определенной 4-х связной области. В [] приведена рекурсивная реализация подпрограммы заливки 4-х связной гранично-определенной области:

void V_FAB4R (grn_pix, new_pix, x_isx, y_isx)

int grn_pix, new_pix, x_isx, y_isx;

if (getpixel (x_isx, y_isx) № grn_pix &&

getpixel (x_isx, y_isx) № new_pix)

putpixel (x_isx, y_isx, new_pix);

V_FAB4R (grn_pix, new_pix, x_isx+1, y_isx);

V_FAB4R (grn_pix, new_pix, x_isx, y_isx+1);

V_FAB4R (grn_pix, new_pix, x_isx-1, y_isx);

V_FAB4R (grn_pix, new_pix, x_isx, y_isx-1);

Заливка выполняется следующим образом:

· определяется является ли пиксел граничным или уже закрашенным,

· если нет, то пиксел перекрашивается, затем проверяются и если надо перекрашиваются 4 соседних пиксела.

Полный текст тестовой программы V_FAB4R с использованием этой подпрограммы приведен в Приложении 6.

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

В [] приведен итеративный алгоритм закраски 4-х связной гранично-определенной области. Логика работы алгоритма следующая:

Поместить координаты затравки в стек

Пока стек не пуст

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

Для всех четырех соседних пикселов проверить

является ли он граничным или уже перекрашен.

Если нет, то занести его координаты в стек.

На рис. а) показан выбранный порядок перебора соседних пикселов, а на рис. б) соответствующий ему порядок закраски простой гранично-определенной области.

a)
Порядок перебора соседних пикселов

Ясно, что такой алгоритм экономнее, так как в стек надо упрятывать только координаты.

Рассмотренный алгоритм легко модифицировать для работы с 8-ми связными гранично-определенными областями или же для работы с внутренне-определенными.

Программа V_FAB4, реализующая данный алгоритм, приведена в Приложении 6.

Сравнительные прогоны тестовых программ V_FAB4R и V_FAB4 подтвердили соображения о неэкономности рекурсивного алгоритма: при стандартном окне стека в 64 K с помощью рекурсивной программы можно закрасить квадратик не более чем 57×57 пикселов. Итеративная же программа V_FAB4 при тех же условиях позволяет закрасить прямоугольник размером 110×110 истратив на массив координат 16382 байта.

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

0.5.2 Построчный алгоритм заливки с затравкой

Использует пространственную когерентность:

· пикселы в строке меняются только на границах;

· при перемещении к следующей строке размер заливаемой строки скорее всего или неизменен или меняется на 1 пиксел.

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

Последовательность работы алгоритма для гранично определенной области следующая:


Координата затравки помещается в стек, затем до исчерпания стека выполняются пункты 2-4.

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

Анализируется строка ниже закрашиваемой в пределах от Хлев до Хправ и в ней находятся крайние правые пикселы всех незакрашенных фрагментов. Их координаты заносятся в стек.

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

    Diplom Consult.ru

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

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

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

    Простейшее решение состоит в следующем: по координатам отрезка получить уравнение прямой и, подставляя в него целочисленные значения координат, менять цвет у получающихся точек. Если концы отрезка имеют координаты (x1, y1) и (x2, y2), то отрезок задается уравнением:

    При этом x меняется от x1 до x2. Напишем простейшую процедуру построения отрезка:

    for x:=x1 to x2 do

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

    Заливка замкнутых контуров в PHP

    Все мы знаем, что такое заливка замкнутых контуров. Данная опция присутствует в Paintведро с краской«), и она заливает замкнутую область определённым цветом. Аналогичная заливка замкнутых контуров есть и в PHP, и о ней я сейчас и расскажу.

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

    Я очень подробно прокомментировал весь код, вдобавок, все эти функции были использованы нами ранее в предыдущих статьях, поэтому здесь вопросов у Вас возникнуть не должно. А вот новую функцию imageFill() неоходимо пояснить.

    Функция imageFill(resource $image, int $x, int $y, int $color) позволяет залить замкнутую область на изображении image, внутри которой находится точка с координатами x и y, цветом color. Если Вы не поняли предыдущее предложение, то перечитайте его ещё раз внимательнейшим образом. Чтобы стало ещё понятнее, давайте вспомним Paint и инструмент «Заливка«. Если Вы знаете, как он работает, то Вам будет легко понять функцию imageFill(). Фактически, image — это Ваша рабочая область в Paint, на которой Вы рисуете, а x и y — это та точка, в которую Вы бы кликнули мышкой для заливки области в Paint. И цвет заливки color Вы также в Paint предварительно выбираете. Вот такая простая и понятная аналогия.

    На сегодня всё, до скорой встречи!

    Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

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

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 0 ):

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

    Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.

    Алгоритм заливки замкнутой области рисунка

    Вопрос

    ODmitrijS 1

    ODmitrijS 1

    • Новичок
    • Пользователи
    • 1

    • 7 сообщений

    Подскажите алгоритм или готовый пример заливки замкнутой области рисунка произвольной формы определенным цветом?
    Моё решение часто приводит к переполнению стека.

    Изменено 18 декабря, 2020 пользователем ODmitrijS

    Поделиться сообщением

    Ссылка на сообщение
    Поделиться на другие сайты

    4 ответа на этот вопрос

    Рекомендуемые сообщения

    Присоединяйтесь к обсуждению

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

    Похожий контент

    Здравствуйте!
    Есть самописный компонент — индикатор загрузки написанныый под VCL с использованием Direct2D.
    TD2DProgressBar = > Затем беру
    FInteropTarget.GetDC(D2D1_DC_INITIALIZE_MODE_COPY, FRenderDC); и вывожу на поверхность функцией

    procedure TD2DProgressBar.UpdateWindow(sourceDC : HDC); var info : TUpdateLayeredWindowInfo; begin ZeroMemory(@info, sizeof(info)); with info do begin cbSize := sizeof(TUpdateLayeredWindowInfo); pptSrc := @FSourcePosition; pptDst := @FWindowPosition; psize := @FWndSize; pblend := @FBlend; dwFlags := ULW_ALPHA; end; info.hdcSrc := SourceDC; if not UpdateLayeredWindowIndirect(handle, @info) then begin RaiseLastOSError(); end end; Но это только под VCL.
    В Firemonkey не нашел способа комбинировать градиенты и/или нарисовать арку градиентом (саму линию арки а не залить сектор) или комбинацией градиентов.

    Илон Маск рекомендует:  Что такое код strchr

    Как вывести этот FRenderTarget на канву Firemonkey-контрола?
    Самая большая проблема в том, что компонент полупрозрачный, и вариант с переливом через Vcl.Graphics.TBitmap и MemoryStream не дает нужного результата.

    MS:=TMemoryStream.Create; Blend.BlendOp := AC_SRC_OVER; Blend.BlendFlags := 0; Blend.AlphaFormat := AC_SRC_NO_PREMULT_ALPHA; Blend.SourceConstantAlpha:= 255; // // Уровень прозрачности Res:=Winapi.Windows.AlphaBlend(VCLBitmap.Canvas.Handle, 0, 0, VCLBitmap.Width, VCLBitmap.Height, FRenderDC, 0, 0, VCLBitmap.Width, VCLBitmap.Height, Blend); <или эта функция StretchBlt(bm.Canvas.Handle, 0, 0, VCLBitmap.Width, VCLBitmap.Height, FRenderDC, 0, 0, VCLBitmap.Width, VCLBitmap.Height, SRCCOPY); >VCLBitmap.SaveToStream(MS); FFMXBitmap.SetSize(TSize.Create(VCLBitmap.Width, VCLBitmap.Height)); FFMXBitmap.LoadFromStream(MS); FreeAndNil(MS);
    В Blend пробовал разные комбинации BlendOp и AlphaFormat.
    Хелп плизз!
    Во вложении компонент под VCL. ( Может кому пригодится)) )
    D2DProgressbar.zip

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

    На деле не получается нарисовать линию на битмапе. Т.е после процедуры Draw2 прожимаю процедуру Draw — получаю на панели красный прямоугольник битмапа без нарисованной линии.
    Посоветуйте чего-нибуть, спасибо!

    //BITMAP Bm:= TBitmap.Create; bm.W >

    привет всем
    У меня проблема в разработке алгоритма, который знает, что кто-то здесь может мне помочь. В сценарии и следующем, у меня есть изображение, которое отображает изображения, размещенные пользователями, так как фотографии могут быть нескольких разных размеров. Мне бы хотелось, чтобы высота проспекта (Image.Height) рассчитывалась в соответствии с размером экрана мобильного телефона (Andro >

    Доброго времени!
    Только начал знакомится с FMX, казалось бы от VCL отличий не так уж и много но все же.
    Пытаюсь загрузить картинку в ImageViewer (в Image тоже пробовал).
    ImageViewer1->Bitmap->LoadFromFile(System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), «1.bmp»)); Но получаю ошибку (failed to loading bitmap «путь_к_папке_с_файлами_приложения» )
    В deployment загружен файл «1.bmp», remote path прописан assets\internal
    Пробовал похожим способом загрузить с помощью deployment текстовый файл в мемо все работает!
    Когда компилю под винду — картинка грузится, под андроид: вылетает вышеуказанная ошибка
    PS Среда C++B10 Seattle

    Загружаю через opendialog картинку формата bmp в image
    Есть переменные с:TColor, c1:Tcolor
    Необходимо вначале узнать цвет определенного пикселя на загруженной картинке и записать в c1, а затем изменить цвет определенного пикселя на загруженной картинке на цвет, хранящийся в переменной c.
    Ищу очень давно, но внятного объяснения нигде не нашла(

    Беда, совсем беда . Имеется на форме TListView (listviewEdit.jpg), в него динамически загружается список с картинками полученными через idhttp + TmemoryStream.

    . private nowDrawed:string; . Item: TListViewItem; ImageObject: TListItemImage; TextObject: TListItemText; groups:array of Tgroups; . . procedure Tmain.drawGroups(); var i:integer; begin try loader.Show; loader.ProgressBar.Max:=high(groups); loader.ProgressBar.Value:=0; Application.ProcessMessages; nowDrawed:=’groups’; ListView.Items.Clear; ListView.BeginUpdate; for i := 0 to high(groups) do begin Item := ListView.Items.Add; TextObject:=Item.Objects.FindObjectT (‘Text’); TextObject.Text:=groups[i].caption; Item.Tag:=strtoint(groups[i]. >(‘Image’); if ImageObject.Bitmap=nil then ImageObject.bitmap:=TBitmap.Create; http.loadImage(url+groups[i].image,ImageObject.bitmap); loader.ProgressBar.Value:=i; Application.ProcessMessages; end; ListView.EndUpdate; loader.h > При этом, если на форму бросить TImage и передавать в функцию loadImage bitmap этого Timage, то всё отображается корректно.
    P.S. Тестовое изображение в аттаче.

    Хотел сделать вот так (1 скриншот)

    Выбраная вкладка (аккаунты): иконка красная. А остальные вкладки чтобы иконка была серая. (как шрифт ниже).
    Подскажите как решить?

    Последние посетители 0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

    Заливка замкнутой области

    Один из способов

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

    Устанавливаем некоторые переменные на уровне формы

    Устанавливаем изображения для PictureBox

    Связка Mouse Down-Move-Up для рисования на PicrureBox

    Строим GraphicsPath и заполняем его цветом

    Если границы области задаются каким-то другим способом, то, возможно, придется реализовать собственный алгоритм заливки с помощью GetPixel\SetPixel.

    В любом случае общий принцип ясен: строим GraphicsPath для границы и заполняем его

    • Помечено в качестве ответа I.Vorontsov Moderator 24 июня 2010 г. 7:10

    Все ответы

    Один из способов

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

    Устанавливаем некоторые переменные на уровне формы

    Устанавливаем изображения для PictureBox

    Связка Mouse Down-Move-Up для рисования на PicrureBox


    Строим GraphicsPath и заполняем его цветом

    Если границы области задаются каким-то другим способом, то, возможно, придется реализовать собственный алгоритм заливки с помощью GetPixel\SetPixel.

    В любом случае общий принцип ясен: строим GraphicsPath для границы и заполняем его

    • Помечено в качестве ответа I.Vorontsov Moderator 24 июня 2010 г. 7:10

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

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

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

    Ммм. вроде где то так.

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

    Белый цвет — это фотография, к примеру, короче, не однотонный.

    Разработка урока информатики «Inkscape. Заливка замкнутой области. Изменение цвета и толщины контура»

    Автор: Булатова Анна Васильевна

    Должность : учитель математики и информатики

    Место работы : КОГОАУ «Кировский экономико-правовой лицей»

    Тема урока: «Заливка замкнутой области. Изменение цвета и толщины контура »

    Предмет: Информационные технологии

    Ключевые слова: открытый, урок, презентация, интеграция, векторная, графика, интерактивная доска, Inkscape

    Тип урока: изучение нового материала

    организовать работу над совершенствованием практических навыков учащихся в создании фигур и их трансформации;

    обучить учащихся выполнению заливки замкнутой области;

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

    развитие познавательного интереса, творческих способностей учащихся;

    развитие у учащихся учебно-организационных умений: организовать себя на выполнение поставленной задачи, осуществлять самоконтроль и самоанализ учебной деятельности;

    развитие у учащихся чувства ответственности;

    развитие у учащихся навыков работы на ПК, внимания и памяти;

    способствовать формированию у учащихся познавательного интереса к предмету;

    воспитывать у учащихся этические нормы общения, дисциплинированность, ответственность, честность.

    Учащиеся должны знать основные понятия:

    интерфейс ГР Inkscape ;

    выделять объекты изображения;

    компьютерный класс (один компьютер на одного учащегося);

    интерактивная доска Smart Board ;

    файл с заданиями для выполнения лабораторной работы.

    Методы обучения : словесно – наглядный, метод практической работы учащихся.

    Формы организации учебной деятельности: фронтальная, групповая, индивидуальная работа

    Организационный момент (1-2 минуты).

    Актуализация знаний (7-8 минут).

    Постановка учебной задачи (5 минут).

    Изучение нового материала (7-8 минут).

    Этап усвоения изученного материала на практике (15 минут).

    Этап информации о домашнем задании (1 минута).

    Этап подведения итогов урока (1-2 минуты)

    Деятельность обучающихся (предполагаемые ответы)

    Организационный момент (1-2 минуты)

    Здравствуйте, ребята! Садитесь!


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

    Актуализация знаний (7-8 минут)

    Уже в течение ряда уроков мы с вами изучаем векторный графический редактор. Подскажите мне название программы? Давайте вспомним, чему же мы научились за это время?

    Поработаем в группах.

    На столах каждой из команд лежат конверты, распечатайте их, расположите материал перед собой. Команда, конверт которой пуст, выполняет задание у доски. Вы заметили, что карточки двух цветов. На белых карточках вы видите вопросы, на красных – ответы. Соотнесите вопросы с правильными ответами. Будьте внимательны, количество ответов больше количества вопросов. На выполнение задания – 4 минуты. Приступаем.

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

    Так я оценила ваши знания.

    Дети видят слова – молодцы, здорово, отлично, умнички, чудесно

    Постановка учебной задачи (5 минут)

    Ребята, какой сегодня день?

    Верно, открываем тетрадочки, записываем число.

    И пока вы записываете, я хочу заметить, что сегодня, 13 марта, английский астроном Уильям Гершель открыл Уран. Ранее неизвестная планета Солнечной системы, расположенная от Солнца седьмой по счету. А сколько всего планет солнечной системы вы знаете?

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

    Проверим, правильно ли мы расположили планеты.

    Переключаю на изображение с черно-белыми планетами, но подписанными.

    Ребята, на мой взгляд, наше творение было намного красочнее. Давайте раскрасим и это изображение. А мы это делать умеем?

    Значит, переходим к изучению новой темы.

    Меркурий, Венера, Земля, Марс, Юпитер, Сатурн, Уран, Нептун

    Дети располагают планеты

    Изучение нового материала (7-8 минут)

    Записываем в тетради тему урока – « Заливка замкнутой области. Изменение цвета и толщины контура».

    Этап усвоения изученного материала на практике (15 минут)

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

    Если у вас появятся вопросы или что-то будет непонятно, поднимайте руку я подойду и помогу.

    Этап информации о домашнем задании (1 минута)

    Выполнение практической работы за компьютерами.

    Рефлексия (1-2 минуты)

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

    Спасибо за урок. До свидания!

    Тема урока № 24 «Заливка замкнутой области.

    Изменение цвета и толщины контура»

    Откройте файл « Планеты солнечной системы » из папки Для учеников на сервер/Информатика/5 класс .

    Закрасьте Меркурий в серый цвет (Цвет определен отсутствием атмосферы и воды, присутствует только скальная порода), для этого:

    Выделите объект круг с изображением Меркурия;

    Выполните команду Объект/Заливка и обводка;

    Выберите вкладку Заливка;

    Выберите тип заливки – Сплошной цвет ;

    Выберите вкладку Круг и измените цвет на серый.

    Измените цвет обводки на темно-серый, выбрав вкладку Обводка/Сплошной цвет ;

    Измените стиль обводки, выбрав вкладку Стиль обводки . Задайте толщину 5 px .

    Закрасьте аналогичным образом все планеты солнечной системы следующими цветами:

    Венера – желтовато-белый, это цвет облаков, окутывающих планету. Облака — продукт испарений соляной кислоты. Цвет контура – ярко-желтый.

    Земля – голубая, светло-синяя планета с покровом белых облаков. Цвет планеты во многом определен водным покровом. Цвет контура –синий.

    Марс – красно-оранжевый. По окрасу пустынного грунта с большим количеством железа. Цвет контура – красный.

    Юпитер – оранжево-желтый с присутствием цветных полос. Цвета образованы облаками газов аммиака и аммония. Цвет контура – оранжевый.

    Сатурн – бледно-желтый, также цвет образован облаками аммиака, под облаками аммиака жидкий водород. Цвет контура – желтый.

    Уран – светло-голубой, цвет образован метановыми облаками. Цвет контура – синий.


    Нептун – планета зеленого цвета, цвет определяется наличием метановых облаков, а поверхность его темнее из-за расстояния от Солнца. Цвет контура – темно-зеленый.

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

    Изобразите звезды, для этого:

    Выберите инструмент на панели инструментов;

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

    Измените свойства инструмента Рисовать звезды и многоугольники на панели параметров.

    Откройте файл « Ракета » из папки Для учеников на сервер/Информатика/5 класс .

    Раскрасьте все детали ракеты по своему усмотрению.

    Для построения примитива правильной формы (квадрата, круга и др.) нужно удерживать клавишу…

    Для построения примитивов от центра нужно удерживать клавишу…

    Изменение размера объекта происходит с помощью маркеров …

    Инструмент для выделения объектов

    Векторные графические редакторы

    Растровые графические редакторы

    С помощью какой панели можно изменить свойства объекта?

    Панель рисующих инструментов

    Панель параметров прилипания

    Слайд 1
    Слайд 2
    Слайд 3
    Слайд 4
    Слайд 5
    Слайд 6
    Слайд 7
    Слайд 8
    Слайд 9
    Слайд 10
    Слайд 11
    Слайд 12
    Слайд 13
    Слайд 14
    Слайд 15
    Автор: Булатова Анна Васильевна → annpoint

    25.08.2015 0 3262 374

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

    Есть мнение?
    Оставьте комментарий

    Смотрите похожие материалы

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

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

    Гордость понимается христианством (а мы изучаем в основном произведения, созданные писателями-христианами) как смертный грех. Из-за гордыни Люцифер отпал от Бога, что в результате и привело человека к смертности и страданиям. Никакого различия между «гордостью» и «гордыней» церковь не видит.

    Хотите получать информацию о наиболее интересных материалах нашего сайта?
    Подпишитесь на рассылку E-mail
    Установите приложение на Android

    2007-2020 «Педагогическое сообщество Екатерины Пашковой — PEDSOVET.SU».
    12+ Свидетельство о регистрации СМИ: Эл №ФС77-41726 от 20.08.2010 г. Выдано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций.
    Адрес редакции: 603111, г. Нижний Новгород, ул. Раевского 15-45
    Адрес учредителя: 603111, г. Нижний Новгород, ул. Раевского 15-45
    Учредитель, главный редактор: Пашкова Екатерина Ивановна
    Контакты: +7-920-0-777-397, info@pedsovet.su
    Домен: http://pedsovet.su/
    Копирование материалов сайта строго запрещено, регулярно отслеживается и преследуется по закону.

    Отправляя материал на сайт, автор безвозмездно, без требования авторского вознаграждения, передает редакции права на использование материалов в коммерческих или некоммерческих целях, в частности, право на воспроизведение, публичный показ, перевод и переработку произведения, доведение до всеобщего сведения — в соотв. с ГК РФ. (ст. 1270 и др.). См. также Правила публикации конкретного типа материала. Мнение редакции может не совпадать с точкой зрения авторов.

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

    О работе с сайтом

    Мы используем cookie.


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

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

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

    Путеводитель по Inkscape: Глава 39, инструмент Сплошная заливка

    Полное название инструмента: Заливать замкнутые области, значок в панели инструментов — . Курсор (указатель) инструмента выглядит так: . Работать инструментом не просто, а очень просто ≈ знай кликай на объектах, а они окрашиваются, независимо от наличия выделения.

    На рисунке 1: кликаем по очереди на каждом объекте ≈ все они окрашиваются в цвет инструмента. Никакого предпочтения выделенному зеленому кругу.

    Механизм заливки проиллюстрирован рисунком 2:

    Инструмент создает поверх заливаемых объектов новые (независимые) объекты, у которых можно изменять атрибуты обычными средствами (можно добавить обводку, изменить заливку и так далее). Заливаемые объекты остаются неизменными.

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

    Важно лишь, чтобы окрашенные пиксели образовывали замкнутую область (рис 3).

    Если замкнутой области не найдется, то в Секции сообщений в Строке состояния появится сообщение: Область не замкнута, заливка невозможна.

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

    Заливать можно: либо стилем инструмента, либо предыдущим стилем. Это определяется в меню Файл ⇨ Настроить Inkscape ⇨ Инструменты ⇨ Сплошная заливка. Там же полезно поставить галочку в чекбоксе Показывать пометку выделения: чтобы было понятно, что свежезалитая область всегда автоматически выделена, стало быть, изменить ее цвет (стиль) легко при помощи Палитры.

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

      В меню Файл ⇨ Настроить Inkscape ⇨ Инструменты ⇨ Сплошная заливка установить: Создавать новые объекты с: Последним использованным стилем.

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

    Выбрать стиль в Палитре.

  • Произвести заливку инструментом Сплошная заливка.
  • На Панели настройки инструмента (рисунок 4) многие опции нуждаются в пояснении.

    Начнем не с первой, а со второй настройки: Порог.

    Всплывающая подсказка сообщает, что порог ≈ это «Максимально допустимая разница между щелкнутым пикселем и соседними пикселями, попадающими в заливку».

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

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

    Когда Порог нулевой, то любой цвет будет распознан. Когда порог 100, то практически ни один цвет не будет отличаться и заливки не произойдет.

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

    О механизме вычисления этого различия мы говорить не будем ≈ об этом знают только разработчики программы Inkscape.

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

    На рисунке 6 та же окружность при различных значениях Порога и при разных точках клика.

    Но цвет ≈ не единственное возможное условие для вычисления заливаемой области. Заливка может производиться также по:

    • Тону
    • Насыщенности
    • Яркости
    • Непрозрачности

    И тут мы вплотную подошли к первой настройке инструмента:

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

    Разберем эти критерии по порядку и все станет понятно.

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

    Критерием вычисления области заливки будет наличие пикселей красного цвета (по системе RGB ≈ Красный/Зеленый/Синий). Зеленый и синий цвета будут игнорироваться.

    На рисунке 7 окружность залита сложным градиентом: от синего к зеленому, от зеленого к красному. Заливается серым цветом при Пороге, равном 50. Точка клика может быть от центра окружности до границы зеленого круга ≈ результат будет одинаков, так как синий и зеленый цвета игнорируются.

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

    На рисунке 8 та же окружность и тот же Порог. Точек клика две: в синей и красной области (в центре и на периферии окружности).

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

    На рисунке 9 та же окружность и тот же Порог.


    Критерием вычисления области заливки будет разница Тона (по системе HSB ≈ Тон/Насыщенность/Яркость). Насыщенность и Яркость будут игнорироваться.

    На рисунке 10 окружность имеет градиент от одного значения Тона до другого. Заливается серым цветом с различными Порогами. Место клика одно и то же.

    и Аналогично Тону (с соответствующими поправками). И иллюстрации были бы аналогичны, поэтому не стану повторяться.

    При вычислении границы заливки принимается во внимание только разница непрозрачности. Все остальное игнорируется.

    На рисунке 11 окружность залита градиентом от черного непрозрачного до черного прозрачного (желтая полоса на заднем плане это демонстрирует). Заливали непрозрачным красным цветом. Показаны результаты при разных Порогах. Точка клика одинакова.

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

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

    Небольшое увеличение размеров заливки нужно для исправления неточностей вычисления заливаемой области. Если объект имеет мелкие детали, то такая неточность возникает неизбежно (рисунок 12, фиолетовый контур).

    Сиреневый контур получен увеличением заливки на 0,3 пикселя, и этого хватило, чтобы все неточности «ушли» за обводку исходного объекта.

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

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

    • Нет
    • Маленькие
    • Средние
    • Большие

    На рисунке 14: Верхний прямоугольник залился весь, так была выбрана опция Закрыть интервалы=Нет. Нижний прямоугольник залился только наполовину, так как была выбрана опция Закрыть интервалы=Маленькие

    Веник позволяет вернуть все настройки к умолчанию.

    В следующей главе речь пойдет об инструменте Градиент.

    Закраска и заполнение замкнутых областей Free Pascal

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

    В графической библиотеке BGI предусмотрено 13 стандартных шаблонов за-

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

    Аргументом этой процедуры является запись типа FillSettingsType, содер- жащая всего два поля:

    type FillSettingsType = record pattern: Word; // номер шаблона color: Word; // код цветности

    Заливается цветом фона (все биты шаблона нулевые)

    Заливается цветом color

    Штриховка горизонтальными линиями

    Тонкая штриховка под 45

    Толстая штриховка под 45

    Толстая штриховка под 135

    Тонкая штриховка под 135

    Двойная штриховка (0 и 90 )

    Двойная штриховка (45 и 135 )

    Короткие чередующиеся штрихи

    Редкий точечный растр

    Густой точечный растр

    Заполнение шаблоном пользователя

    Шаблон пользователя устанавливается с помощью процедуры SetFillPattern: SetFillPattern(fill_pat,color);

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

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

    В графической библиотеке BGI предусмотрено 13 стандартных шаблонов за-

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

    Аргументом этой процедуры является запись типа FillSettingsType, содер- жащая всего два поля:

    type FillSettingsType = record pattern: Word; // номер шаблона color: Word; // код цветности


    Заливается цветом фона (все биты шаблона нулевые)

    Заливается цветом color

    Штриховка горизонтальными линиями

    Тонкая штриховка под 45

    Толстая штриховка под 45

    Толстая штриховка под 135

    Тонкая штриховка под 135

    Двойная штриховка (0 и 90 )

    Двойная штриховка (45 и 135 )

    Короткие чередующиеся штрихи

    Редкий точечный растр

    Густой точечный растр

    Заполнение шаблоном пользователя

    Шаблон пользователя устанавливается с помощью процедуры SetFillPattern: SetFillPattern(fill_pat,color);

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

    Около сотни нестандартных узоров вы можете найти в книге [20].

    Процедуры и функции, используемые для работы с залитыми областями, при- ведены в табл. 15.8.

    Формат обращения к процедуре

    Построение залитого прямоугольника

    Заливка внутренней или внешней части замкнутой области

    Формат обращения к процедуре

    Построение залитого эллипса

    Построение залитого многоугольника

    Опрос текущего шаблона заливки

    Опрос параметров заливки

    Построение залитого сектора окружности

    Построение залитого сектора эллипса

    Задание пользовательского шаблона

    Установка режима заливки

    Пример использования процедуры Bar в режиме заливки сплошным цветом приводился в разд. 15.3. Результат работы соответствующей программы показыва- ет, что цветной прямоугольник строится без обводки границ. Чтобы построить цветной прямоугольник с четко очерченной границей другого цвета, надо обра- титься к двум последовательным процедурам (листинг 15.7).

    Листинг 15.7. Программа fill1

    program fill1; uses graph; var

    gd:=D8bit; gm:=m800x600; initgraph(gd,gm,”);

    SetFillPattern(pat94,4); // назначение шаблона пользователя SetFillStyle(UserFill,4); // установка режима заливки Bar(10,10,100,100); // отображение прямоугольника без границы Rectangle(9,9,101,101); // обводка границы

    Результат ее работы в истинных цветах представлен на рис. 15.8.

    Рис. 15.8. Обводка границ прямоугольника

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

    Bar3D(x1, y1, x2, y2, depth, top);

    Первые четыре аргумента задают угловые точки передней панели столбика. Параметр depth определяет глубину столбика и иногда его рекомендуют выбирать равным четверти ширины (deph=0.25*(x2-x1)). Естественно, что все эти парамет- ры целочисленные и неотрицательные, задаются они в пикселах. Последний аргу- мент top — логического типа. Если он равен True, то крыша столбика рисуется, в противном случае столбик воспроизводится без крыши, и это дает возможность надстроить над ним следующий столбик и не заботиться об удалении невидимых линий. Приведенный в листинге 15.8 пример демонстрирует возможность воспро- изведения одиночного (с крышей) и составного столбика (нижний — без крыши, верхний — с крышей).

    Листинг 15.8. Программа bar3d_1

    program bar3d_1; uses graph;

    gd,gm: SmallInt; begin

    gd:=D8bit; gm:=m800x600; initgraph(gd,gm,”); SetColor(Green);

    Результат работы этой программы приведен на рис. 15.9.

    Рис. 15.9. Элементы столбчатых диаграмм

    Иногда к процедуре Bar3D обращаются с нулевым значением параметра depth. В этом случае можно построить залитый прямоугольник с четко выделенной гра- ницей.

    Процедура FloodFill предназначена для заливки или штриховки внутренней или внешней части замкнутого контура:


    FloodFill(x, y, bord_col);

    Параметр bord_col задает цвет пикселов, составляющих непрерывную границу области. Если точка с координатами (x, y) находится внутри области, то обработке подвергается внутренняя часть замкнутого контура. В противном случае окраска (штриховка) выполняется для внешней части контура. Разрыв границы контура да- же на один пиксел приведет к тому, что краска (штриховка) «просочится» на про- тивоположную часть контура и залитым окажется весь экран или большая его часть. Последнее может произойти, если на пути краски встретится еще один замк- нутый контур с таким же цветом границы. Если цвет заливки, установленный в од- ной из процедур SetFillPattern или SetFillStyle, не совпадает с цветом грани- цы, то цвет контура после работы процедуры FloodFill остается прежним. Однако оба указанных цвета могут совпасть, и тогда залитая область лишится ярко выра- женного цвета границы. Повторная перекраска такой области с помощью процеду- ры FloodFill уже невозможна.

    Процедура FillEllipse предназначена для построения залитого эллипса. При

    необходимости его граница может быть очерчена с помощью процедуры Ellipse.

    Параметры процедуры FillPoly совпадают с аргументами процедуры DrawPoly

    Листинг 1 5 .9 . Программа f_polygon

    program f_polygon; uses graph;

    xy: array [1..4] of PointType; begin

    gd:=D8bit; gm:=m800x600; initgraph(gd,gm,”); SetColor(Green);

    FillPoly(4,xy); readln; CloseGraph;

    Залитый по этой программе треугольник представлен на рис. 15.10.

    Рис. 15.10. Заливка многоугольника

    Секторы окружностей или эллипсов, окрашиваемые с помощью процедур PieSlice и Sector, часто используются для построения круговых диаграмм (рис. 15.11).

    Рис. 15.11. Круговая диаграмма

    Опрос текущих параметров заливки осуществляется с помощью процедур Get- FillSettings и GetFillPattern.

    Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

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

    В графической библиотеке BGI предусмотрено 13 стандартных шаблонов за-

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

    Аргументом этой процедуры является запись типа FillSettingsType, содер- жащая всего два поля:

    type FillSettingsType = record pattern: Word; // номер шаблона color: Word; // код цветности

    Заливка и обводка выделенных областей, слоев и контуров

    На этой странице

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

    Заливка с помощью инструмента «Заливка»

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

    Инструмент «Заливка» не может использоваться с изображениями в битовом режиме.

    Инструмент «Быстрая заливка» объединен с инструментом «Градиент» в панели инструментов. Если не удается найти инструмент «Быстрая заливка», нажмите и удерживайте в нажатом положении инструмент «Градиент», чтобы получить к нему доступ.

    Укажите режим наложения и непрозрачность для краски. (См. раздел Режимы наложения.)

    Допуск определяет, насколько подобным по цвету должен быть пиксел (по отношению к пикселу, на котором выполнен щелчок), чтобы к нему была применена заливка. Допустимые значения находятся в диапазоне от 0 до 255. При низком допуске происходит заливка пикселов цветами в диапазоне значений цветов, весьма подобных пикселу, на котором выполнен щелчок. При высоком допуске происходит заливка пикселов цветами в более широком диапазоне.

    Если при работе с некоторым слоем необходимо избежать заливки прозрачных областей, то следует обязательно заблокировать прозрачность этого слоя на панели «Слои». (См. раздел Закрепление слоев.)

    Заливка выделенной области или слоя цветом

    «Основной цвет», «Фоновый цвет», «Черный», «50 % серого» или «Белый»

    Выполняется заливка выделенной области указанным цветом.

    Если происходит заливка изображения CMYK с использованием параметра «Черный», то Photoshop выполняет заливку всех каналов полностью черным цветом. Это может вызвать необходимость в применении большего количества краски по сравнению с допустимым по условиям эксплуатации принтера. Для достижения лучших результатов при заливке изображения CMYK используйте параметр «Основной цвет» с указанием в качестве основного цвета соответствующего значения черного цвета.

    Выполняется заливка цветом, выбранным в окне «Палитра цветов».

    Укажите режим наложения и непрозрачность для краски. (См. раздел Режимы наложения.)

    Чтобы применить заливку основным цветом только к областям, которые содержат пикселы, нажимайте клавиши «Alt» + «Shift» + «Backspace» (Windows) или «Option» + «Shift» + «Delete» (Mac OS). В результате этого сохранится прозрачность слоя. Чтобы применить заливку фоновым цветом только к областям, которые содержат пикселы, нажимайте клавиши «Ctrl» + «Shift» + «Backspace» (Windows) или «Command» + «Shift» + «Delete» (Mac OS).

    Использование заливки с учетом содержимого, заливки узором и заливки от истории

    Сведения по использованию функции Редактирование > Заливка с учетом содержимого , представленной в Photoshop CC 20.0 (выпуск за октябрь 2020 года), см. в разделе Заливка с учетом содержимого.

    На слое фона нажмите клавишу Delete или Backspace, чтобы быстро получить доступ к диалоговому окну «Заливка».

    С учетом содержимого

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

    Заливка с учетом содержимого совмещает подобные элементы изображения на случайной основе. Если результат вас не устраивает, выберите «Редактирование» > «Отменить», а затем примените другую заливку с учетом содержимого.

    (Включено по умолчанию) Алгоритмически смешивает цвет заливки с окружающим цветом

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

    Можно также применить один из прилагаемых узоров на основе сценариев, чтобы с легкостью создавать различные геометрические узоры заливки. Выберите «Узоры на основе сценариев» в нижней части диалогового окна заливки, а затем выберите узор заливки во всплывающем меню «Сценарий».

    Если узор затемнен, сначала необходимо загрузить библиотеку узоров и только потом делать выбор. (См. раздел Управление библиотеками узоров и наборами.)

    восстанавливает исходное состояние выделенной области или снимок экрана, выбранный на панели «История».

    Заливка произвольной области

    Итак, я ранее уже писал, что пишу курсовую — простенький графический редактор.

    Вот сейчас я дошел до самого интересного — инструмент заливки.

    Так вот, как мне залить одним цветом какую-нибудь произовальную область, если я зарянее не знаю, какая область это будет.

    Ведь во всех редакторах, даже в Пейнте, есть заливка, а я очень сомневаюсь, что этот редактор запомниает где-то в каком-то массиве координаты ВСЕХ точек )

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

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

    Илон Маск рекомендует:  Иконки веб-шрифтов альтернатива изображениям
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL