Основные свойства форм
Последнее обновление: 31.10.2015
С помощью специального окна Properties (Свойства) справа Visual Studio предоставляет нам удобный интерфейс для управления свойствами элемента:
Большинство этих свойств оказывает влияние на визуальное отображение формы. Пробежимся по основным свойствам:
-
Name: устанавливает имя формы — точнее имя класса, который наследуется от класса
Form
-
BackColor: указывает на фоновый цвет формы. Щелкнув на это свойство, мы сможем выбрать тот цвет, который нам подходит
из списка предложенных цветов или цветовой палитры -
BackgroundImage: указывает на фоновое изображение формы
-
BackgroundImageLayout: определяет, как изображение, заданное в свойстве BackgroundImage, будет располагаться на форме.
-
ControlBox: указывает, отображается ли меню формы. В данном случае под меню понимается меню самого верхнего уровня, где
находятся иконка приложения, заголовок формы, а также кнопки минимизации формы и крестик. Если данное свойство имеет значение false, то мы не увидим
ни иконку, ни крестика, с помощью которого обычно закрывается форма -
Cursor: определяет тип курсора, который используется на форме
-
Enabled: если данное свойство имеет значение false, то она не сможет получать ввод от пользователя, то есть мы не сможем
нажать на кнопки, ввести текст в текстовые поля и т.д. -
Font: задает шрифт для всей формы и всех помещенных на нее элементов управления. Однако, задав у элементов формы свой шрифт,
мы можем тем самым переопределить его -
ForeColor: цвет шрифта на форме
-
FormBorderStyle: указывает, как будет отображаться граница формы и строка заголовка. Устанавливая данное свойство в None
можно создавать внешний вид приложения произвольной формы -
HelpButton: указывает, отображается ли кнопка справки формы
-
Icon: задает иконку формы
-
Location: определяет положение по отношению к верхнему левому углу экрана, если для свойства
StartPosition
установлено значениеManual
-
MaximizeBox: указывает, будет ли доступна кнопка максимизации окна в заголовке формы
-
MinimizeBox: указывает, будет ли доступна кнопка минимизации окна
-
MaximumSize: задает максимальный размер формы
-
MinimumSize: задает минимальный размер формы
-
Opacity: задает прозрачность формы
-
Size: определяет начальный размер формы
-
StartPosition: указывает на начальную позицию, с которой форма появляется на экране
-
Text: определяет заголовок формы
-
TopMost: если данное свойство имеет значение
true
, то форма всегда будет находиться поверх других окон -
Visible: видима ли форма, если мы хотим скрыть форму от пользователя, то можем задать данному свойству значение
false
-
WindowState: указывает, в каком состоянии форма будет находиться при запуске: в нормальном, максимизированном или минимизированном
Программная настройка свойств
С помощью значений свойств в окне Свойства мы можем изменить по своему усмотрению внешний вид формы, но все то же самое мы можем сделать
динамически в коде. Перейдем к коду, для этого нажмем правой кнопкой мыши на форме и выберем в появившемся контекстном меню View Code (Просмотр кода). Перед нами открывается файл кода
Form1.cs. Изменим его следующим образом:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace HelloApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); Text = "Hello World!"; this.BackColor = Color.Aquamarine; this.Width = 250; this.Height = 250; } } }
В данном случае мы настроили несколько свойств отображения формы: заголовок, фоновый цвет, ширину и высоту.
При использовании конструктора формы надо учитывать, что весь остальной код должен идти после вызова метода InitializeComponent()
, поэтому все установки свойств
здесь расположены после этого метода.
Установка размеров формы
Для установки размеров формы можно использовать такие свойства как Width/Height или Size. Width/Height принимают числовые значения, как в вышеприведенном
примере. При установке размеров через свойство Size, нам надо присвоить свойству объект типа Size:
this.Size = new Size(200,150);
Объект Size в свою очередь принимает в конструкторе числовые значения для установки ширины и высоты.
Начальное расположение формы
Начальное расположение формы устанавливается с помощью свойства StartPosition
, которое может принимать одно из следующих значений:
-
Manual: Положение формы определяется свойством Location
-
CenterScreen: Положение формы в центре экрана
-
WindowsDefaultLocation: Позиция формы на экране задается системой Windows, а размер определяется свойством Size
-
WindowsDefaultBounds: Начальная позиция и размер формы на экране задается системой Windows
-
CenterParent: Положение формы устанавливается в центре родительского окна
Все эти значения содержатся в перечислении FormStartPosition
, поэтому, чтобы, например, установить форму в центре экрана, нам надо прописать
так:
this.StartPosition = FormStartPosition.CenterScreen;
Фон и цвета формы
Чтобы установить цвет как фона формы, так и шрифта, нам надо использовать цветовое значение, хранящееся в структуре Color:
this.BackColor = Color.Aquamarine; this.ForeColor = Color.Red;
Кроме того, мы можем в качестве фона задать изображение в свойстве BackgroundImage
, выбрав его в окне свойств или в коде, указав путь к изображению:
this.BackgroundImage = Image.FromFile("C:\\Users\\Eugene\\Pictures\\3332.jpg");
Чтобы должным образом настроить нужное нам отображение фоновой картинки, надо использовать свойство BackgroundImageLayout
,
которое может принимать одно из следующих значений:
-
None: Изображение помещается в верхнем левом углу формы и сохраняет свои первоначальные значения
-
Tile: Изображение располагается на форме в виде мозаики
-
Center: Изображение располагается по центру формы
-
Stretch: Изображение растягивается до размеров формы без сохранения пропорций
-
Zoom: Изображение растягивается до размеров формы с сохранением пропорций
Например, расположим форму по центру экрана:
this.StartPosition = FormStartPosition.CenterScreen;
Распознавание голоса и речи на C#
UnmanagedCoder 05.05.2025
Интеграция голосового управления в приложения на C# стала намного доступнее благодаря развитию специализированных библиотек и API. При этом многие разработчики до сих пор считают голосовое управление. . .
Реализация своих итераторов в C++
NullReferenced 05.05.2025
Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их. . .
Разработка собственного фреймворка для тестирования в C#
UnmanagedCoder 04.05.2025
C# довольно богат готовыми решениями – NUnit, xUnit, MSTest уже давно стали своеобразными динозаврами индустрии. Однако, как и любой динозавр, они не всегда могут протиснуться в узкие коридоры. . .
Распределенная трассировка в Java с помощью OpenTelemetry
Javaican 04.05.2025
Микросервисная архитектура стала краеугольным камнем современной разработки, но вместе с ней пришла и головная боль, знакомая многим — отслеживание прохождения запросов через лабиринт взаимосвязанных. . .
Шаблоны обнаружения сервисов в Kubernetes
Mr. Docker 04.05.2025
Современные Kubernetes-инфраструктуры сталкиваются с серьёзными вызовами. Развертывание в нескольких регионах и облаках одновременно, необходимость обеспечения низкой задержки для глобально. . .
Создаем SPA на C# и Blazor
stackOverflow 04.05.2025
Мир веб-разработки за последние десять лет претерпел коллосальные изменения. Переход от традиционных многостраничных сайтов к одностраничным приложениям (Single Page Applications, SPA) — это. . .
Реализация шаблонов проектирования GoF на C++
NullReferenced 04.05.2025
«Банда четырёх» (Gang of Four или GoF) — Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — в 1994 году сформировали канон шаблонов, который выдержал проверку временем. И хотя C++ претерпел. . .
C# и сети: Сокеты, gRPC и SignalR
UnmanagedCoder 04.05.2025
Сетевые технологии не стоят на месте, а вместе с ними эволюционируют и инструменты разработки. В . NET появилось множество решений — от низкоуровневых сокетов, позволяющих управлять каждым байтом. . .
Создание микросервисов с Domain-Driven Design
ArchitectMsa 04.05.2025
Архитектура микросервисов за последние годы превратилась в мощный архитектурный подход, который позволяет разрабатывать гибкие, масштабируемые и устойчивые системы. А если добавить сюда ещё и. . .
Многопоточность в C++: Современные техники C++26
bytestream 04.05.2025
C++ долго жил по принципу «один поток — одна задача» — как старательный солдатик, выполняющий команды одну за другой. В то время, когда процессоры уже обзавелись несколькими ядрами, этот подход стал. . .
В данной статье мы разберем несколько вариантов изменения цвета элементов Windows Forms на примере фона формы Form1 и прочих компонентов.
Способ №1. Изменение цвета в свойствах элемента.
Для многих это самый легкий способ изменения цветовой палитры элементов, так как не надо писать код, всё визуализировано и интуитивно понятно.
Для этого надо выбрать элемент формы (или саму форму) и в «Свойствах» найти вкладку «Внешний вид». Нас интересует строка BackColor:
Здесь имеется большое количество цветовых схем и их визуальных представлений.
Выберем для примера какой-либо из цветов, чтобы изменить фон формы:
Итог такой:
Легко, незамысловато, понятно.
Следующие способы будут производиться в коде.
Способ №2. Изменение цвета, используя структуру Color.
Это самый простой способ среди кодовых вариаций.
«На пальцах» это выглядит так:
Названиеэлементаформы.BackColor = Color.Название_цвета;
Если мы захотим закрасить фон формы в зеленый цвет, то строка кода будет выглядеть вот так:
public Form1() { InitializeComponent(); this.BackColor = Color.Green; } |
При запуске форма будет выглядеть так:
Если понадобится изменить цвет, например, кнопки Button на тёмно-бордовый, код будет таким:
button1.BackColor = Color.Maroon; |
Данный способ прост тем, что требуется лишь написать название цвета, которых также большое количество.
Зачастую этих двух способов хватает для оформления программы. Если же нужна более гибкая настройка или же среди стандартных цветов не имеется необходимых, можно воспользоваться способами, описанными ниже.
Способ №3. Изменение цвета, используя метод Color.Argb.
Этот и следующий методы позволят генерировать нужный цвет, используя значения цветового канала RGB.
RGB — это цветовая модель, которая синтезирует цвета, используя смешивание трёх основных цветов (Красного — Red, Зеленого — Green, Синего- Blue) с чёрным, вследствие чего получаются новые цвета и оттенки. Зависит получаемый цвет от интенсивности этих трёх основных цветов. Если смешать Красный, Зеленый и Синий в максимальной насыщенности, получится белый цвет. Если не смешивать их, то остаётся чёрный.
Данный способ позволяет регулировать интенсивность трех этих цветов, при смешивании которых и получится нужный нам оттенок.
Интенсивность в числовой форме для удобства применения обозначается от 0 (минимальная интенсивность) до 255(максимальная интенсивность). Все три цвета можно «варьировать» по этой шкале.
Словесно это выглядит вот так:
Названиеэлементаформы.BackColor = Color.FromArgb(Насыщенность красного, Насыщенность зеленого, Насыщенность синего);
Чтобы закрасить фон программы в чёрный цвет, используя данный метод, надо написать вот такую строку:
public Form1() { InitializeComponent(); this.BackColor = Color.FromArgb(0, 0, 0); } |
На выходе получим:
Можно и поэкспериментировать:
this.BackColor = Color.FromArgb(111, 121, 131); |
Если нам понадобится, для примера, изменить фон Listbox’a на красный данных способом, то код у нас будет следующий:
listBox1.BackColor = Color.FromArgb(255, 0, 0); |
Данный способ и способ ниже подходят больше для людей, разбирающихся в цветовых моделях, гаммах и числовых значениях цветов.
Способ №4. Изменение цвета, используя метод ColorTranslator.FromHtml
Этот метод также основывается на модели RGB, но записывается она в шестнадцатеричном виде, а именно #RrGgBb. Первые две шестнадцатеричные цифры после решетки обозначают насыщенность Красного, вторые две — насыщенность Зеленого, последние — насыщенность Синего. Минимальная насыщенность здесь — 00, максимальная — FF(В переводе с шестнадцатеричной системы счисления в десятичную это число обозначает 255). Остальной принцип смешивания цветов такой же.
Данный метод создан для языка веб-разметки HTML, но пользуются им повсеместно.
Принцип кода такой:
Названиеэлементаформы.BackColor = ColorTranslator.FromHtml(«#КрЗлГб»);
Для изменения бэкграунда формы в белый код такой:
public Form1() { InitializeComponent(); this.BackColor=ColorTranslator.FromHtml(«#FFFFFF»); } |
Если понадобится изменить данным способом фон Label’a в коричневый:
label1.BackColor = ColorTranslator.FromHtml(«#A52A2A»); |
Мы рассмотрели 4 основных способа изменения цвета фона элементов в Windows Forms. Все они не сложные, разобраться можно в каждом. Каким из них пользоваться — решать только Вам.
Спасибо за просмотр!
Содержание
- Как задать фон панели Windows Forms с помощью конструктора How to: Set the background of a Windows Forms panel using the Designer
- Задайте фон в конструктор Windows Forms Set the background in the Windows Forms Designer
- Программирование на C, C# и Java
- Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
- Как поменять цвет фона элементов в Windows Forms
- Изменение цвета фона формы и ее элементов
- Прозрачность в Microsoft Forms Transparency in Microsoft Forms
- См. также See also
- Поддержка и обратная связь Support and feedback
- Кисти фона и переднего плана
- Указание цветов в коде
- Задание цветов в XAML
Как задать фон панели Windows Forms с помощью конструктора How to: Set the background of a Windows Forms panel using the Designer
PanelЭлемент управления Windows Forms может отображать как цвет фона, так и фоновое изображение. A Windows Forms Panel control can display both a background color and a background image. BackColorСвойство задает цвет фона для элементов управления, содержащихся на панели, таких как метки и переключатели. The BackColor property sets the background color for controls that are contained in the panel, such as labels and radio buttons. Если BackgroundImage свойство не задано, BackColor Выделенная область будет заполнена всей панелью. If the BackgroundImage property is not set, the BackColor selection will fill all of the panel. Если BackgroundImage свойство задано, изображение будет отображаться позади элементов управления, содержащихся на панели. If the BackgroundImage property is set, the image will be displayed behind the controls that are contained in the panel.
Для следующей процедуры требуется проект приложения Windows с формой, содержащей Panel элемент управления. The following procedure requires a Windows Application project with a form that contains a Panel control. Сведения о том, как настроить такой проект в Visual Studio, см. в разделе как создать проект приложения Windows Forms и как добавить элементы управления в Windows Forms. For information about how to set up such a project in Visual Studio, see How to: Create a Windows Forms application project and How to: Add Controls to Windows Forms.
Задайте фон в конструктор Windows Forms Set the background in the Windows Forms Designer
Откройте проект в Visual Studio и выберите Panel элемент управления. Open the project in Visual Studio and select the Panel control.
В окне Свойства нажмите кнопку со стрелкой рядом со BackColor свойством, чтобы отобразить окно с тремя вкладками. In the Properties window, click the arrow button next to the BackColor property to display a window with three tabs.
В окне Свойства нажмите кнопку со стрелкой рядом со BackgroundImage свойством. In the Properties window, click the arrow button next to the BackgroundImage property.
В диалоговом окне Открыть выберите файл, который требуется отобразить. In the Open dialog box, select the file that you want to display.
Источник
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Как поменять цвет фона элементов в Windows Forms
В данной статье мы разберем несколько вариантов изменения цвета элементов Windows Forms на примере фона формы Form1 и прочих компонентов.
Способ №1. Изменение цвета в свойствах элемента.
Для многих это самый легкий способ изменения цветовой палитры элементов, так как не надо писать код, всё визуализировано и интуитивно понятно.
Для этого надо выбрать элемент формы (или саму форму) и в “Свойствах” найти вкладку “Внешний вид”. Нас интересует строка BackColor:
Здесь имеется большое количество цветовых схем и их визуальных представлений.
Выберем для примера какой-либо из цветов, чтобы изменить фон формы:
Легко, незамысловато, понятно.
Следующие способы будут производиться в коде.
Способ №2. Изменение цвета, используя структуру Color.
Это самый простой способ среди кодовых вариаций.
“На пальцах” это выглядит так:
Если мы захотим закрасить фон формы в зеленый цвет, то строка кода будет выглядеть вот так:
При запуске форма будет выглядеть так:
Если понадобится изменить цвет, например, кнопки Button на тёмно-бордовый, код будет таким:
Данный способ прост тем, что требуется лишь написать название цвета, которых также большое количество.
Зачастую этих двух способов хватает для оформления программы. Если же нужна более гибкая настройка или же среди стандартных цветов не имеется необходимых, можно воспользоваться способами, описанными ниже.
Способ №3. Изменение цвета, используя метод Color.Argb.
Этот и следующий методы позволят генерировать нужный цвет, используя значения цветового канала RGB.
RGB – это цветовая модель, которая синтезирует цвета, используя смешивание трёх основных цветов (Красного – Red, Зеленого – Green, Синего- Blue) с чёрным, вследствие чего получаются новые цвета и оттенки. Зависит получаемый цвет от интенсивности этих трёх основных цветов. Если смешать Красный, Зеленый и Синий в максимальной насыщенности, получится белый цвет. Если не смешивать их, то остаётся чёрный.
Данный способ позволяет регулировать интенсивность трех этих цветов, при смешивании которых и получится нужный нам оттенок.
Интенсивность в числовой форме для удобства применения обозначается от 0 (минимальная интенсивность) до 255(максимальная интенсивность). Все три цвета можно “варьировать” по этой шкале.
Словесно это выглядит вот так:
Названиеэлементаформы.BackColor = Color.FromArgb(Насыщенность красного, Насыщенность зеленого, Насыщенность синего);
Чтобы закрасить фон программы в чёрный цвет, используя данный метод, надо написать вот такую строку:
Источник
Изменение цвета фона формы и ее элементов
Основным параметром, определяющим внешний вид формы, является цвет ее фона. Поэтому при выборе цвета фона необходимо руководствоваться тем, для каких целей предназначена разрабатываемая форма и как в дальнейшем планируется ее использовать. Напомним, что для форм, выводимых на печать, лучше использовать менее яркие цвета, поскольку цветной фон или фон с рисунком потребуют больших затрат на расходные материалы для принтера.
Цвет фона раздела формы или ее элемента определяется значением свойства Цвет фона (Back Color). В форме, созданной с помощью Мастера форм, фон всех ее разделов зависит от стиля оформления, выбранного при ее создании. Например, к форме «Форма_Сотрудники» был применен автоформат Стандартный (Standard), который задает светло-серый цвет фона.
Чтобы изменить цвет фона раздела формы или ее элемента:
Заметим, что цвет фона раздела формы в Access устанавливается независимо от цвета фона других разделов. Поэтому, чтобы поменять цвет всех разделов, нужно задать новый цвет для каждого раздела отдельно.
Цвет фона раздела формы не влияет на цвет фона элементов управления, находящихся в нем. Для каждого элемента управления также можно выбрать свой цвет фона и цвет шрифта. Для меток элементов управления обычно задан прозрачный цвет фона, т. е. в качестве фона метки используется та часть фона раздела формы, которую она занимает. По умолчанию для текстовых полей используется белый цвет фона, поэтому цвет текстовых полей (и содержащихся в них данных) контрастен цвету фона формы.
Можно задать прозрачный цвет фона не только меткам, но и таким элементам управления, как текстовые поля и раскрывающиеся списки. Для этого выделите элемент управления одного из упомянутых типов, а затем в списке Цвет заливки/фона выберите элемент Прозрачный (Transparent). Заметим, что применение прозрачного цвета фона ко всему разделу формы не разрешено. Л задание прозрачного фона текстовому полю или раскрывающемуся списку приведет к следующему эффекту: в режиме Формы цвет данного элемента управления станет прозрачным, когда этот элемент не будет активным, т. е. когда фокус (точка ввода) будет находиться в другом элементе. Когда же точка ввода будет помещена в данное текстовое поле или раскрывающийся список, он приобретет непрозрачный цвет фона, который был задан ему ранее. Пример такого отображения полей можно наблюдать в форме «Заказы клиентов» (Customer Orders) демонстрационной базы данных «Борей» (это поля «Название» (Company Name) и «Страна» (Country)). Дело в том, что значение «прозрачный» соответствует на самом деле не свойству элемента Цвет фона (Back Color), а свойству Тип фона (Back Style). Тип фона элемента может принимать одно из двух значений: Обычный (Normal) (когда потеря фокуса элементом не изменяет его цвет) или Прозрачный (Transparent).
Источник
Прозрачность в Microsoft Forms Transparency in Microsoft Forms
Microsoft Forms поддерживает прозрачность в двух областях: фон определенных элементов управления и в растровых изображениях, используемых для определенных элементов управления. Microsoft Forms supports transparency in two areas: the background of certain controls, and in bitmaps used on certain controls.
Свойство BackStyle определяет, является ли элемент управления прозрачным. The BackStyle property determines whether a control is transparent. Прозрачный элемент управления позволяет видеть, что находится в форме позади этого элемента. A transparent control lets you see what is behind it on the form. Это полезно, если в форме используется декоративный фон и нужно минимизировать часть фона, закрываемую элементами управления. This is useful if you have a decorative background on the form and you want to minimize the amount of that background that is hidden behind the controls. Для получения дополнительных сведений о том, как сделать элемент управления прозрачным, ознакомьтесь со статьей Создание прозрачного элемента управления. For more information about making a control transparent, see Create a transparent control.
В Microsoft Forms растровое изображение можно отобразить на многих элементах управления. You can display a bitmap on many controls in Microsoft Forms. Некоторые элементы управления поддерживают прозрачные растровые изображения, то есть растровые изображения, в которых один или несколько цветов фона прозрачны. Certain controls support transparent bitmaps, that is, bitmaps in which one or more background colors are transparent. Прозрачность растрового изображения не управляется никаким свойством элемента управления, она управляется цветом нижнего левого пикселя изображения. Bitmap transparency is not controlled by any control property; it is controlled by the color of the lower-left pixel in the image. В Microsoft Forms не предусмотрен способ, позволяющий редактировать растровое изображение или сделать его прозрачным — для этой цели необходимо использовать редактор изображений. Microsoft Forms does not provide a way to edit a bitmap and make it transparent; you must use a picture editor for this purpose.
В Microsoft Forms растровые изображения всегда прозрачны для следующих элементов управления: In Microsoft Forms, bitmaps are always transparent on the following controls:
Прозрачные изображения иногда кажутся мутными. Transparent pictures sometimes have a hazy appearance. Если такое представление не подходит, отображайте изображение на элементе управления, поддерживающем непрозрачные изображения. If you do not like this appearance, display the picture on a control that supports opaque images.
При использовании прозрачного растрового изображения для элемента управления, не поддерживающего прозрачные растровые изображения, он будет отображаться правильно, но вы не сможете увидеть, что находится позади этого изображения. If you use a transparent bitmap on a control that does not support transparent bitmaps, the bitmap will display correctly, but you won’t be able to see what’s behind it. В Microsoft Forms прозрачные растровые изображения не поддерживаются следующими элементами управления: In Microsoft Forms, the following controls do not support transparent bitmaps:
См. также See also
Поддержка и обратная связь Support and feedback
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Источник
Кисти фона и переднего плана
Все элементы управления имеют фон (background) и передний план (foreground). Как правило, фоном является поверхность элемента управления (например, белая или серая область внутри кнопки), а передним планом — текст. В WPF цвет (но не содержимое) этих двух областей определяется с помощью свойств Background и Foreground соответственно.
Естественно ожидать, что свойства Background и Foreground должны использовать объекты цвета, как в приложениях на основе Windows Forms. Однако на самом деле эти свойства используют более универсальный объект — Brush (кисть). Он позволяет заливать содержимое фона и переднего плана сплошным цветом (с помощью кисти SolidColorBrush) или чем-то экзотическим (например, используя кисти LinearGradientBrush или TileBrush).
Указание цветов в коде
Предположим, что вы хотите задать внутри кнопки cmd поверхность голубого цвета. Вот код, позволяющий это сделать:
Этот код создает новый объект SolidColorBrush с цветом, указанным с помощью статического свойства класса Colors. (Имена основаны на названиях цветов, которые поддерживаются большинством веб-браузеров.) Затем эта кисть определяется в качестве фоновой кисти кнопки, в результате чего фон кнопки становится светло-голубым.
Такой метод оформления кнопки не очень удобен. Он задает фоновый цвет кнопки в ее обычном состоянии (не нажата), но не изменяет цвет, который появляется при щелчке на кнопке (обычно более темный серый цвет). Чтобы настраивать все нюансы отображения кнопок, следует ознакомиться с шаблонами.
Можно также пользоваться системными цветами (они могут выбираться исходя из предпочтений пользователя) из перечисления System.Windows.SystemColors. Например:
Поскольку системные кисти используются часто, класс SystemColors предлагает также готовые свойства, возвращающие объекты SolidColorBrush. Ниже показано, как их применять:
В обоих этих примерах имеется небольшая проблема. Если системный цвет будет изменен после выполнения этого кода, кнопка не будет обновлена, и новый цвет не будет применен. По сути, этот код делает мгновенный снимок текущего цвета или кисти.
Чтобы программа могла изменять себя в ответ на изменения в конфигурации, необходимо применять динамические ресурсы. Классы Colors и SystemColors предлагают удобные сокращения, однако это не единственный способ задать цвет. Вы можете, например, создать объект Color, указав значения R, G и В (красной, зеленой и синей составляющих). Каждое из этих значений является числом из диапазона 0-255.
Можно также сделать цвет частично прозрачным, используя значение альфа-канала и вызвав метод Color.FromArgb(). Значение альфа-канала, равное 255, соответствует полной непрозрачности, а значение 0 — полной прозрачности:
Стандарт RGB полезен, поскольку применяется во многих других программах. Например, можно получить RGB-значение цвета в программе для рисования и использовать этот же цвет в WPF-приложении. Однако не исключено, что другие устройства (например, принтеры) могут поддерживать более широкий диапазон цветов. По этой причине был создан альтернативный стандарт scRGB, в котором каждый компонент цвета (альфа-канал, красный, зеленый и синий) представлен 64-битовыми значениями.
Структура класса Color в WPF поддерживает оба подхода. Она включает как набор стандартных свойств RGB (A, R, G и В), так и набор свойств scRGB (ScA, ScR, ScG и ScB). Эти свойства связаны между собой, поэтому если задать свойство R, то соответственно изменится и свойство ScR.
Взаимосвязь между значениями RGB и значениями scRGB не является линейной. Значение 0 в системе RGB соответствует значению 0 в scRGB, 255 в RGB соответствует 1 в scRGB, а все значения в диапазоне 0-255 в RGB представлены в scRGB как десятичные значения из диапазона от 0 до 1.
Задание цветов в XAML
При задании цвета фона или переднего плана в XAML можно воспользоваться удобным сокращением. Вместо определения объекта Brush можно указать наименование или значение цвета. Компилятор WPF автоматически создаст объект SolidColorBrush с выбранным цветом и будет применять этот объект для фона или переднего плана. Вот пример с использованием имени цвета:
Он эквивалентен следующему многострочному фрагменту:
Если нужен другой тип кисти (например, LinearGradientBrush), для рисования фона потребуется использовать более длинную форму.
Если необходим код цвета, придется пользоваться менее удобным синтаксисом, в котором значения R, G и В представляются в шестнадцатеричном формате. Доступны два формата: #rrggbb или #aarrggbb (они отличаются тем, что второй формат содержит значение альфа-канала). Для задания значений A, R, G и В, нужно только по две цифры, поскольку все они представляются в шестнадцатеричной форме. Ниже показан пример, который создает тот же цвет, что и в предыдущем фрагменте кода, с помощью формата aarrggbb:
Здесь значением альфа-канала является FF (255), значением красной составляющей — FF (255), а зеленая и синяя составляющие равны 0.
Кисти поддерживают автоматическое уведомление об изменениях. То есть если прикрепить кисть к элементу управления и изменить ее, элемент управления обновляет себя соответствующим образом. Это возможно потому, что кисти являются потомками класса System.Windows.Freezable. Название этого класса (freezable — замораживаемый) объясняется тем, что все такие объекты имеют два состояния: изменяемое состояние и состояние только для чтения («замороженное»).
Background и Foreground — не единственные свойства, которые можно определить с помощью кисти. Свойства BorderBrush и BorderThickness позволяют нарисовать рамку вокруг элементов управления (и некоторых других элементов вроде Border).
Свойство BorderBrush принимает указанную кисть, а свойство BorderThickness — ширину рамки в не зависящих от устройства единицах. Чтобы рамка стала видимой, необходимо установить оба свойства.
Некоторые элементы управления не поддерживают использование свойств BorderBrush и BorderThickness. Объект Button игнорирует их полностью, поскольку определяет свой фон и рамку с помощью декоратора ButtonChrome. Однако кнопке можно придать новый облик (с указанной вами рамкой) с помощью шаблонов.
Источник