Как установить цвета переднего плана и фона в элементе управления WPF

Вам нужно узнать больше о шаблонах и стилях в WPF (на самом деле XAML). В XAML, как выглядит элемент управления и как работает управление, это две совершенно разные вещи. В вашем примере у вас может быть свойство Foreground и Background, но стиль \template элемента управления не использует эти свойства для отображения элемента управления.

Если вы используете Visual Studio 2012 для редактирования вашего интерфейса WPF, вы можете легко создать копию стиля\шаблона, который использует элемент управления меню, а затем отредактировать его. Если вы используете Visual Studio 2010, вы должны загрузить и установить (может быть, может быть, и не быть свободным) Expression Blend, чтобы отредактировать ваш XAML-интерфейс.

Совет . Если вы используете Visual Studio 2012, убедитесь, что окно панели "Контур документа" постоянно отображается. Это очень удобно для редактирования пользовательского интерфейса XAML. Mine по умолчанию была свернута в левой части программы. Эта панель отображается по умолчанию в Expression Blend.

Найдите элемент MenuItem в контуре документа. Щелкните его правой кнопкой мыши и выберите "Редактировать шаблон" → "Редактировать копию"...

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

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

Если вы выполните поиск SubMenuBackgroundBrush, вы увидите, что он используется в части с именем PART_Popup:

Это всплывающее окно, которое вы видите, когда вы щелкаете правой кнопкой мыши по чему-то, что показывает меню или выпадающее меню. Измените ссылки: {StaticResource SubMenuBackgroundBrush} на {TemplateBinding Foreground} .

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

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

Давайте приступим!

Шаг 1: Добавьте новый слой

Откройте изображение, затем нажмите и удерживайте клавишу Alt (Win ) / Option (Mac ) и кликните на иконке «Новый слой » в нижней части палитры слоев:

Удерживайте нажатой клавишу Alt (Win) / Option (Mac) и кликните на иконке «Новый слой»

Таким образом мы добавляем новый слой поверх текущего. Но удерживая клавишу Alt (Win ) / Option (Mac ) при нажатии иконки «Новый слой », мы сообщаем Photoshop , чтобы нам нужно открыть диалоговое окно «Новый слой », прежде чем слой будет добавлен.

Это даст нам возможность дать имя слою, а также позволит изменить несколько важных параметров. Так как я буду использовать этот слой для осветления и затемнения некоторых областей, я назову его «Dodge and Burn «. Если вы не хотите, можете не называть отдельно слой, но назначение слоям имен — это очень полезная привычка:

Назовите новый слой «Dodge and Burn» (по желанию)

Однако, для чего нам действительно понадобится окно «Новый слой », это для того чтобы изменить опцию в самом низу окна — Режим . «Режим » — это сокращение от «Режим смешивания слоя », и по умолчанию для него установлено значение – «Нормальный ». Измените «Режим смешивания » на «Перекрытие »:

Измените «Режим смешивания» нового слоя на «Перекрытие»

Если коротко, то режим смешивания «Перекрытие » относится к группе режимов «Контрастность » и часто используется, чтобы увеличить контрастность изображения. Любые участки слоя, которые светлее, чем 50% серого (имеется в виду оттенок серого точно посередине между черным и белым ) используются, чтобы осветлить изображение.

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

В режиме смешивания «Перекрытие » в диалоговом окне вы увидите новую опцию – «Выполнять заливку нейтральным цветом (50% серого) ». Установите флажок, чтобы включить эту опцию:

Установите флажок, чтобы включить опцию «Выполнять заливку нейтральным цветом (50% серого)»

Это указывает Photoshop заполнить наш новый слой 50% серого. После того, как вы закончите, нажмите кнопку «ОК », чтобы выйти из диалогового окна. Если мы сейчас посмотрим на палитру слоев, то увидим новый слой под названием «Dodge and Burn «, расположенный над фоном.

Для этого слоя у нас установлен режим смешивания «Перекрытие », и если мы посмотрим на его миниатюру слева от имени, то увидим, что этот слой заполнен серым:

Новый слой «Dodge and Burn» в палитре «Слои»

Чуть раньше я отметил, что, когда для слоя установлен режим смешивания «Перекрытие », любые области слоя, которые имеют оттенок 50% серого, становятся прозрачными. И, если мы посмотрим на наше изображение, то увидим, что, несмотря на то, что слой «Dodge and Burn » заполнен сплошным серым, мы видим нашу исходную фотографию. Серый цвет слоя «Dodge and Burn » является полностью прозрачным:

Сплошной серый слоя «Dodge and Burn» является прозрачным в окне документа

Шаг 2: Выберите инструмент «Кисть»

Мы собираемся осветлить и затемнить различные участки изображения, просто нарисовав поверх них белые или черные области. Области, закрашиваемые белым, станут светлее, закрашиваемые черным — темнее. Опять же, так происходит потому, что мы будем рисовать их на слое, для которого установлен режим смешивания «Перекрытие ».

Однако прежде, чем мы сможем что-то закрасить, мы должны выбрать инструмент «Кисть ». Для этого либо выберите «Кисть » из палитры инструментов, либо нажмите на клавиатуре клавишу «B »:

Выберите инструмент «Кисть»

Шаг 3: Установите цвет переднего плана на белый

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

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

Образец цвета переднего плана в палитре инструментов

Шаг 4: Уменьшите непрозрачность кисти до 10 — 20%

Лучше всего при работе с этой техникой постепенно наращивать количество осветлений и затемнений, которые мы применяем, потому что даже небольшого значения иногда может быть вполне достаточно. Поэтому мы должны работать с кистью низкой непрозрачности. Убедитесь, что у вас выбран инструмент «Кисть », затем перейдите в панель параметров в верхней части экрана и уменьшите непрозрачность до 10-20%. Я установил значение 10%.

Таким образом, каждый раз, когда я буду закрашивать ту же область, я буду увеличивать интенсивность освещения или затемнения на 10%, что дает мне больше возможностей для маневра:

Уменьшите непрозрачность кисти в панели параметров

Шаг 5: Закрасьте области, которые вы хотите осветлить

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

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

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

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

Закрасьте белым области фото, которые вы хотите сделать ярче

Шаг 6: Установите цвет переднего плана на черный

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

14

К сожалению, закодирован в стиле по умолчанию:

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

Private void ProgressBar_Loaded(object sender, RoutedEventArgs e) { var p = (ProgressBar)sender; p.ApplyTemplate(); ((Panel)p.Template.FindName("Animation", p)).Background = Brushes.Red; }

но это ненадежное

2

Это решение работает с темой Aero. Вы должны проверить другие темы, чтобы убедиться, что существует элемент с именем Animation. И, конечно, эта проблема может возникать с пользовательскими шаблонами. Другой проблемой является переключение тем. Я не знаю, перезагружает ли WPF элементы управления, когда пользователь меняет тему ОС. Если нет, то вам нужно справиться с этим моментом и снова изменить фон анимации. Если вы не хотите предоставлять свой собственный шаблон, я думаю, что было бы неплохо получить от ProgressBar. Там вы должны переопределить OnApplyTemplate для разрешения ошибки шаблона каждый раз при изменении шаблона. - Marat Khasanov 19 янв. 11 2011-01-19 21:07:25

13

просто попробовать с этим

Если он не работает, как вам требуется, вы должны изменить стиль или ControlTemplate из ProgressBar.

Для этого вы можете использовать Expression Blend от Microsoft или получить копию существующего шаблона и изменить его.

1

Я столкнулся с аналогичной проблемой wh чтобы визуальные настройки Windows были оптимизированы для лучшей производительности (Панель управления -> Система -> Расширенные параметры системы -> Дополнительно -> Производительность -> Настройки -> Визуальные эффекты -> Настройка для лучшей производительности). Индикатор выполнения выглядел нормально при нормальных настройках, но ужасно под «лучшей производительностью». Я просто изменил ForeGround на «LightGreen».

Вот что я видел по умолчанию ForeColor при нормальных условиях

Вот что я видел, с поправкой на лучшее исполнение

Вот изменение

//before //after

Вот что я увидел после того, когда с поправкой на лучшее исполнение

1

Марат Хасанов отметил, что нежелательный зеленый оттенок исходит от объекта с именем «Анимация» в рамках контроля шаблон. Таким образом, еще один простой подход - скрыть этот объект. Это также отключит анимированный эффект «свечения», который я считаю активом, но вы можете видеть его как убийцу сделки. Я реализовал это через обработчик для события Loaded, как показано ниже.

Это было вдохновлено an answer to another question . Такая же оговорка применяется: если они меняют шаблон управления, это может больше не работать.

Public void ProgressBar_Loaded(object sender, RoutedEventArgs e) { var progressBar = sender as ProgressBar; if (progressBar == null) return; var animation = progressBar.Template.FindName("Animation", progressBar) as FrameworkElement; if (animation != null) animation.Visibility = Visibility.Collapsed; }

0

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

Var yourcontrol = new ProgressBar(); // the control needs to load before it has a template. yourcontrol.Loaded += (sender,e) => { var str = new System.Text.StringBuilder(); using (var writer = new System.IO.StringWriter(str)) System.Windows.Markup.XamlWriter.Save(yourcontrol .Template, writer); System.Diagnostics.Debug.Write(str); }; // add it to your main grid, or some control thats loaded on screen. gridMain.Children.Add(yourcontrol);

Стиль выполнения (с некоторым форматированием) выходит в следующем:

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

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

Инструмент «Color Replacement Tool» (Замена цвета)

Инструмент Color Replacement Tool (Замена цвета) был впервые введен в Photoshop CS, и если вы работаете в Photoshop CS или CS2, то можете найти его в группе вместе с инструментом «Лечащая кисть» (Healing Brush).

Если же у вас Photoshop CS3 или CS4, CS5 или CS6, нажмите на иконку инструмента Кисть (Brush) и удерживайте ее до появления выпадающего списка других инструментов группы, выберите «Замену цвета».

Как только вы выбрали инструмент Color Replacement, курсор мыши превратится в круг с маленьким крестиком в центре.

Вы можете настроить размер круга с помощью горячих клавиш - скобок [ или ]. Левая скобка уменьшает размер, правая - увеличивает. Чтобы регулировать жесткость (hardness) кисти, добавьте нажатие клавиши Shift(Shift+левая кв. скобка делает края мягкими, Shift+правая кв.скобка делает кисть жестче).

Как работает инструмент Color Replacement:

Когда вы перетаскиваете инструмент Color Replacement на изображении, фотошоп непрерывно сканирует образец цвета, находящийся в данный момент под крестиком курсора. Это цвет, который будет заменен на текущий цвет переднего плана. Любые другие пиксели, которые окружают круглый курсор, тоже изменяют цвет при движении его по объекту.

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

В палитре инструментов вы видите настройки цвета в данный момент. По умолчанию установлен черный цвет:

Для того, чтобы изменить цвет переднего план, нажмите на верхний квадрат (образец цвета) и выберите любой новый цвет из цветовой палитры. Выбираем зеленый цвет. Нажмите Ок и закройте палитру цветов.


Посмотрите на палитру инструментов. Образец цвета переднего плана изменился. Теперь цвет переднего плана - зеленый. Теперь, если мы будем рисовать на изображении инструментом “Замена цвета” , исходный цвет будет заменен на зеленый цвет:

Возьмем пример фотографии девочки с шарами:


Она выглядит счастливым с голубым воздушный шаром в руке, но может быть ей хотелось бы иметь зеленый шар. Давайте посмотрим, что мы можем сделать для нее. С помощью инструмента “Замена цвета”/”Color Replacement”, кликнув курсором по шарику, начнем движение внутри него. Фотошоп начинает заменять синий цвет зеленым.


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

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

Толерантность

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

Мы уже говорили, что у инструмента “Замена цвета” есть несколько параметров, которые можно настраивать на панели управления. Одним из таких параметров является “толерантность”. “Толерантность” определяет чувствительность к заменяемому цвету. По умолчанию толерантность составляет 30%, что является хорошей отправной точкой. Но этого не достаточно для нашего случая. Увеличиваем толерантность до 50%, что позволит инструменту “Замена цвета” влиять на более широкий диапазон цветов:

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


Заканчиваем обработку в оставшихся областях и наш голубой шарик магически превращается в зеленый, благодаря инструменту “Замена цвета”:

Использовать цвет из изображения

В приведенном выше примере мы случайно выбрали новый цвет шара из палитры цветов в фотошоп. Точно так же легко можно выбрать цвет непосредственно из самой фотографии. Для этого с активным инструментом «Замена цвета» (Color Replacement Tool), нажимаем клавишу Alt и ваш курсор превращается в пипетку (Eyedropper Tool).

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

Возьмем цвет блузки девочки:


Если вы посмотрите на образец цвета переднего плана на панели инструментов, вы увидите что цвет, на который вы нажали, стал основным цветом:

Этим цветом мы снова можем закрасить шар с помощью инструмента “Замена цвета”:


Режимы наложения

Режимы наложения

Причина, по которой инструмент “Замена цвета” сохраняет объем и текстуру, заключается в том, что он использует режимы наложения, чтобы смешать новые цвета.
Новый цвет взаимодействует с предыдущим цветом и получается такой эффект. Режимы наложения вы видите в верхнем меню установок. Их четыре: тон, насыщенность, цвет и яркость (Hue, Saturation, Color, and Luminosity). По умолчанию задан режим Цвет (Color)

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

Тон/Hue: при применении режима “Hue” изменится только основной цвет. Не будет менять насыщенность и яркость исходного цвета. Этот режим удобен для изображений, где цвета не очень интенсивные и он, как правило, дает очень небольшие изменения.

Насыщенность/Saturation: режим “Saturation” меняет только насыщенность первоначального цвета. Оттенок и яркость не затрагиваются. Этот режим полезен для снижения интенсивности цвета, или удалении цвета полностью.

Цвет/Color: режим “Color” задан по умолчанию и меняет оттенок и насыщенность. Яркость останется неизменной. Этот режим наложения вы будете использовать наиболее часто.

Яркость/Luminosity: И, наконец, режим “Luminosity” изменяет яркость исходного цвета на яркость нового цвета. Оттенок и насыщенность остаются неизменными.

Берем другую фотографию с шариками:


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

Если бы мы хотели полностью обесцветить воздушные шары, мы бы установили основной цвет черный, белый или серый, но так как мы хотим получить более тонкий эффект, мы просто возьмем один из менее насыщенных цветов с изображения. Удерживая клавишу Alt мой (Win) / Option (Mac), мы временно переключаемся на инструмент Eyedropper Tool, и нажимаем на цвет, который мы хотим использовать. Мы выберем менее насыщенный желтый цвет. Цвет сам по себе не имеет никакого значения, так как режим наложения не изменит оригинальный цвет. Режим будет влиять только на насыщенность:


Выбираем инструмент “Замена цвета” и рисуем по тем шарикам, на которых мы хотим снизить уровень насыщенности, делая их бледнее. Размер кисти можно регулировать квадратными скобками. Если необходимо, регулируйте и уровень толерантности. На примере ниже вы видите, насколько отличается первоначальный оттенок шарика от измененного.

Закрашиваем другие шарики. Их насыщенность снижается. Вот так выглядит результат:


Проблемы с яркостью

К сожалению есть ситуации, в которых использование инструмента “Заменить цвет” вызывает сложности.

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

Сначала вернем все цвета шаров в первоначальное состояние. Для этого перейдем в меню Файл - Вернуть (File- Revert). Затем берем образец цвета с фиолетового шарика, кликнув по нему с зажатой клавишей Alt, чтобы переключиться на пипетку.

Режим смешивания устанавливаем в Color. Это значение по умолчанию. Затем мы начинаем закрашивать оранжевый шар, чтобы изменить его ​​цвет на темно-фиолетового. Вот результат:


Хм. Это определенно фиолетовый, но он не совсем похож на другие фиолетовые шары, не так ли? Проблема в том, что наш оранжевый шарик намного ярче, чем фиолетовые шары. Установленный режим смешивания не влияет на яркость. Он действует только на цвет. Давайте, изменим режим смешивания на на “Яркость”/”Luminosity”:

Давайте, отменим все предыдущие действия и вернем шару оранжевый цвет, а затем установим режим смешивания “Яркость”/”Luminosity” . Теперь закрашиваем шар темно - фиолетовым.


Можно с уверенностью сказать, что результат плохой. В режиме “Яркость”/”Luminosity” шар стал ярче, но он остался оранжевым и потерял структуру.
Проблема заключается в слишком большой разнице яркостей объектов. Инструмент «Замена цвета» прекрасно справляется с простыми задачами, где всего лишь нужно изменить оттенок или насыщенность цвета, но если слишком много различий между яркостью двух элементов изображения, то нужно выбирать другие способы замены цвета.

Давайте, еще раз посмотрим на инструмент “Замена цвета”/”Color Replacement Tool”.

В верхнем меню мы видим три иконки с изображением пипеток. Каждая из этих иконок представляет собой вариант выбора образца цвета для работы (Sampling). Смотрим слева-направо: проба - непрерывно “Continuous” - задана по умолчанию; проба - однократно “Once”; проба - образец фона “Background Swatch”. Чтобы переключаться с одного варианта на другой, нужно просто активировать выбранный значок.

Рассмотрим варианты.

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

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

Образец фона “Background Swatch”. Этот вариант вы скорее всего не будете применять очень часто. Здесь фоновый цвет заменяет первоначальный цвет. На снимке будут заменены только те пиксели, которые совпадают с цветом фона. Для этого нужно выбрать в цветовой палитре оттенок, наиболее подходящий по цвету к изображению. Это можно сделать, кликнув по нижнему квадрату иконки цвета. Регулируйте значение толерантности, если оттенок вас не устраивает.

“Ограничения”/ “Limits”

Следующий вариант настроек инструмента “Замена цвета” контролирует местоположение заменяемых пикселей и называется “Ограничения”/ “Limits”. Здесь есть три варианта обнаружения цвета: смежные пиксели (Contiguous), несмежные (Discontinuous) и выделение краев (Find Edges).

Чаще всего вы будете использовать первые два.

По умолчанию установлен тип ограничения “Смежный”/ “Contiguous”. В этом варианте инструмент “Замена цвета”/ “Color Replacement Tool” перекрашивает пиксели, которые находятся под крестиком в пределах курсора. Воздействие инструмента не будет действовать на пиксели, которые соответствуют выбранному цвету, но отделены от курсора областью другого цвета. По крайней мере, пока курсор не находится в этих зонах.

Тип ограничения “Несмежный”/ “Discontinuous” заменяет все пиксели, находящиеся в пределах курсора.

Последний тип выделения краев “Find Edges” заменяет цвет в областях с оттенком выбранного цвета, сохраняя очертания краев объекта.

Рассмотрим последнюю опцию в верхнем меню установок инструмента “Сглаживание”/”Anti-aliasing”. Используйте эту опцию, если вам нужно сгладить края при точных очертаниях объекта. Если вам не нужно сглаживание, снимите флажок.

Удачи Вам в обработке;-))