Как сделать прозрачный фон в visual studio

Обновлено: 28.06.2024

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

Существует несколько способов сделать элемент полупрозрачным:

Установка свойства Opacity элемента

Каждый элемент, включая фигуры, наследует свойство Opacity (прозрачность) от базового класса UIElement. Прозрачность — это дробное значение от 0 до 1, где 1 означает полную непрозрачность (и принято по умолчанию), а 0 — полную прозрачность. Например, значение прозрачности 0,9 создает эффект 90% видимости (10% прозрачности). Установленная подобным образом прозрачность влияет на визуальное содержимое всего элемента.

Установка свойства Opacity кисти

Каждая кисть также наследует свойство Opacity от базового класса Brush. Устанавливая значение этого свойства от 0 до 1, можно управлять прозрачностью содержимого, которое рисует кисть, будь то сплошной цвет, градиент либо некоторого рода текстура или изображение. Поскольку для свойств Stroke и Fill фигуры используются разные кисти, можно задавать разную степень прозрачности для ее границы и поверхности.

Использование цвета, имеющего непрозрачное значение альфа-канала

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

Ниже показан пример с несколькими полупрозрачными слоями:

Окно с несколькими полупрозрачными слоями

В данном примере следует отметить следующие моменты:

Окно имеет непрозрачный белый фон.

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

Первая кнопка использует полупрозрачный красный цвет фона. (Для отображения этого цвета WPF "за кулисами" создает кисть SolidColorBrush.) Изображение просматривается сквозь фон кнопки, но ее текст непрозрачен.

Метка (под первой кнопкой) используется в том виде как есть. По умолчанию все метки имеют полностью прозрачный фон.

Текстовое поле использует сплошной цвет текста и сплошной цвет контура, но полупрозрачный цвет фона.

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

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

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

Я хотел сделать мою форму windows прозрачной, поэтому удалил границы, элементы управления и все, оставив только поле формы, затем я попытался BackColor и TransparencyKey прозрачным, но это не сработало, поскольку BackColor не будет принимать прозрачный цвет. После поиска вокруг я нашел это в msdn:

Unhappyly это не работает. Я все еще получаю серый или любой другой выбранный цвет фона.

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

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

надеюсь, кто-нибудь может осветить мой путь.

изображение удалено, поскольку проблема решена

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

простым решением для получения прозрачного фона в форме windows является перезапись OnPaintBackground способ такой:

(заметьте, что тег base.OnpaintBackground(e) удаляется из функции)

в моем случае, я сделал это, написав следующий код:

вот мое решение:

в конструкторах добавьте эти две строки:

в вашей форме добавьте этот метод:

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

мое решение было очень рядом с Джоэлом (не Этертон, просто Джоэл):

поэтому убедитесь, что вы используете один и тот же BackColor везде и установите этот цвет как TransparencyKey.

Я пробовал почти все это. но все равно не получилось. Наконец, я обнаружил, что это из-за проблем 24bitmap. Если вы попробовали растровое изображение, которое меньше 24bit. Большинство из вышеперечисленных методов должны работать.

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

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

установите изображение как форму BackgrounImage свойство и установить цвет в качестве формы TransparencyKey . Нет необходимости в изменениях стиля элемента управления и нет необходимости в BackColor.

я попробовал это правильно теперь и это сработало для меня.

Должно ли это иметь какое-либо отношение к "непрозрачности" формы / ее фона ? Вы пробовали непрозрачность = 0

Мой художник-график дал мне файл .PNG, а затем тот же файл, что и .GIF. Когда я сохраняю его, пиксели прозрачного фона фактически устанавливаются в белые пиксели. Когда-то я думал, что VS мог бы делать прозрачные цвета с этим маленьким розовым /лососевым ретро-изображением в цветовой палитре, но он больше не появляется.

У кого-нибудь есть идеи?

3 ответа

В редакторе изображений Visual Studio 2015 я нашел простой способ сделать это с помощью инструмента ластика.

  1. Сначала залейте фон, который вы хотите сделать прозрачным, с достаточно уникальным цветом (я думаю, это не обязательно нужно после некоторых испытаний. Вам решать), которого нет на рисунке.
  2. Затем выберите инструмент, используемый для «выбора области аналогичного цвета».
  3. Затем нажмите на фон, который вы залили новым цветом. Будет выделена только область, которую нужно сделать прозрачной.
  4. Теперь используйте инструмент ластик с таким большим размером (шириной стирания в свойствах), который вы хотите легко стереть с непрозрачного фона. Ластик не сотрет нужную картинку.

ПРИМЕЧАНИЕ. Для этого необходимо установить формат «BGRA 32bpp».

РЕДАКТИРОВАТЬ . Я обнаружил, что вам даже не нужен инструмент ластика. После шага 3 нажмите «Удалить», и фон исчезнет!

В редакторе изображений VS 2013 у меня работает следующее:

Выберите View-Toolbars-Image Editor, чтобы вы могли видеть панель инструментов

Выберите ластик на панели инструментов. Установите ширину стирания в окне свойств на 1

Теперь, щелкнув («стирая»), пиксель установит прозрачность

Инструмент VS-ластик работал, но занимал слишком много времени для моего изображения. Этот инструмент автоматически сделал мой белый фон прозрачным, когда я загрузил версию png.

  1. Перетащите изображение на страницу (затем страница выполняет некоторую обработку для изображение)
  2. Нажмите зеленую кнопку загрузки в правом нижнем углу и выберите .jpg (прозрачный фон)
  • Free
  • Супер быстрый
  • Онлайн-инструмент, поэтому скачивать нечего
  • Изображение должно быть размером не менее 100 x 100 пикселей

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

GeeZeR » 11.12.2007 (Вт) 2:42

Парни, подскажите как вывести на экран полупрозрачный png или gif, чтобы кусок PictureBox был прозрачным, вот к примеру картинка:

Изображение

Первый элемент PictureBox содержит изображение стены, а второй PictureBox наложен сверху и содержит изображение двери. Дверь тут полукруглая, верхние углы у картинки прозрачные. Вот собственно в этом и проблема как сделать так чтоб PictureBox содержащий рисунок двери был тоже прозрачным? Поставил BackColor - Transparent в свойствах PictureBox и ничего.
Понимаю что вопрос из разряда rtfm, но я блин в поиске уже утонул, помогите плз.

программист » 11.12.2007 (Вт) 11:11

Люди помогите плиз (мне это тоже очень нуно) инфы по теме не нашел (перерыл все и инет)!

Ramzes » 11.12.2007 (Вт) 13:03

GeeZeR » 11.12.2007 (Вт) 19:10


Код: Выделить всё Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

PictureBox2.BackColor = Color.Transparent
PictureBox1.Image = Image.FromFile("img\wall.jpg")
PictureBox2.Image = Image.FromFile("img\door.jpg")

Я поставил даже так:


Код: Выделить всё Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

PictureBox2.BackColor = Color.Empty
PictureBox1.Image = Image.FromFile("img\wall.jpg")
PictureBox2.Image = Image.FromFile("img\door.jpg")

Всё равно PictureBox выглядывает. Жду помощи.

Вот файл проекта на всякий случай.

AnarCky » 11.12.2007 (Вт) 19:25

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

GeeZeR » 11.12.2007 (Вт) 20:07

AnarCky Подскажи пожалуйста как указать прозрачный цвет? С .jpg я пробовал - то же самое получается. Есть мысль прозрачные углы картинки с дверью залить к примеру малиновым цветом, а потом программно исключить его или сделать прозрачным, но не будут ли края PictureBox выглядывать опять?

AnarCky » 11.12.2007 (Вт) 20:38

вот. покопался в книжке. проверь - должно работать:
Код: Выделить всё
Dim bmp As New Bitmap
bmp = Image.FromFile("img\door.jpg")
Dim g As Graphics = Graphics.FromImage(bmp)
Dim backColor As Color = bmp.GetPixel(3, 3) 'этот метод используется чтоб получить цвет пикселя координатами (3; 3)
bmp.MakeTransparent(backColor)
PictureBox2.Image = bmp

впринципе, если точно знаешь цвет фона, то можно сразу подставить в метод MakeTransparent()

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

GeeZeR » 11.12.2007 (Вт) 21:22

Бейсик ругается на Dim bmp As New Bitmap :
"Overload resolution failed because no accessible 'New' accepts this number of arguments."

Я нашёл в мсдн пару зацепок, но не представляю как это применить:

Я не въезжаю как всё это дело оформить

Nord777 » 11.12.2007 (Вт) 21:55

Рисуй сразу на форме.
Код: Выделить всё Public Class Form1
Dim ImgDoor As Bitmap = Image.FromFile("img\door.jpg")
Dim ImgWall As Bitmap = Image.FromFile("img\wall.jpg")

Private Sub Form1_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleCreated
Me.DoubleBuffered = True
End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim G As Graphics = e.Graphics
G.DrawImage(ImgWall, 59, 25)
G.DrawImage(ImgDoor, 182, 150)
End Sub
End Class

программист » 11.12.2007 (Вт) 22:10

Nord777
Рисовать на форме не вариант - потом придется контролированть клики и курсор мыши в границе двери

Nord777 » 11.12.2007 (Вт) 22:28

Рисовать на форме не вариант - потом придется контролированть клики и курсор мыши в границе двери

И в чем проблема? +3 строки кода. Зато всё под контролем.

Код: Выделить всё Public Class Form1
Dim ImgDoor As Bitmap = Image.FromFile("img\door.jpg")
Dim ImgWall As Bitmap = Image.FromFile("img\wall.jpg")
Dim DoorRect As Rectangle

Private Sub Form1_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleCreated
Me.DoubleBuffered = True
DoorRect = New Rectangle(182, 150, ImgDoor.Width, ImgDoor.Height)
End Sub

Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
If DoorRect.Contains(e.Location) Then MsgBox("Door clicked")
End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim G As Graphics = e.Graphics
G.DrawImage(ImgWall, 59, 25)
G.DrawImage(ImgDoor, DoorRect)
End Sub
End Class

программист » 11.12.2007 (Вт) 23:18

Nord777
А если нуно вставить анимированный рисунок (мельница или облачко)?

GeeZeR » 11.12.2007 (Вт) 23:24

Nord777 , любопытно спасибо за вариант.

Ну а если удобнее использовать именно PictureBox? Есть же какая-то возможность сделать именно сам PictureBox прозрачным насколько я понял из справки (ведь сам по себе PictureBox способен содержать прозрачный рисунок):

То есть получается если задать этот самый ControlStyles.SupportsTransparentBackColor как true, то запись типа:
PictureBox2.BackColor плюс-чего-то-там
выдаст нам прозрачный PictureBox с картинкой?
Ведь будет легче и естественнее использовать PictureBox с такими заданными свойствами, чем отрисовывать это всё прямо на форме.

программист » 11.12.2007 (Вт) 23:48

Свойство BackColor не поддерживает прозрачные цвета, если бит стиля ControlStyles.SupportsTransparentBackColor не задан как true
Может кто-то знает как или где установить ControlStyles.SupportsTransparentBackColor в true

Nord777 » 12.12.2007 (Ср) 0:58

Может кто-то знает как или где установить ControlStyles.SupportsTransparentBackColor в true

Control.Setstyle(. true)
Только вам это не поможет.
Control.Region поможет, туда копайте.

вот небольшой пример:
Код: Выделить всё Imports System.Drawing.Drawing2D
Imports System.Drawing

Public Class Form1
Dim GP As New GraphicsPath
Dim P As New Pen(Color.Black, 5)

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.ControlBox = False
Me.Size = New Size(380, 300)
Me.Text = ""


Dim FF As New FontFamily("Arial BLack")
Dim Pnt As New PointF(0.0!, 50.0!)
Dim Rect As Rectangle = Me.ClientRectangle
Dim FS As FontStyle = FontStyle.Regular
Dim SF As New StringFormat()
SF.LineAlignment = StringAlignment.Center

GP.AddEllipse(Me.ClientRectangle)
GP.AddString("Round", FF, FS, 100.0!, Pnt, SF)
Me.Region = New Region(GP)
End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

e.Graphics.FillPath(Brushes.AliceBlue, GP)
e.Graphics.DrawPath(P, GP)
End Sub

программист » 12.12.2007 (Ср) 2:19

Ну хорошо. Но это пример статик?!
А мне необходи динамическое отображение (gif'а, к примеру)

AnarCky » 12.12.2007 (Ср) 6:12

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

GeeZeR » 12.12.2007 (Ср) 18:51

Nord777 , спасибо ещё раз - я поиграл вчера с твоим кодом - всё это легко применяется и отдельно для PictureBox, только исчезает он вместе с картинкой - можешь как-нибудь попробовать наложить вместо букв картинку?
Ещё мне вот тут мысля пришла - у PictureBox есть свойство BackgroundImage, так вот - можно поместить это изображение позади основного рисунка (в пикчербоксе получится 2 картинки - одна над другой), и выводить на бэк-рисунок изображение того, что находится под PictureBox - получится такая себе эмуляция прозрачности. Есть у кого-нибудь такое решение?

GeeZeR » 12.12.2007 (Ср) 19:05

AnarCky писал(а): и кстати у меня пересохранение в .jpg (статичный) с указанием прозрачного цвета работает.

в смысле работает? проект в студию плз

Nord777 » 13.12.2007 (Чт) 19:11

Nord777, спасибо ещё раз - я поиграл вчера с твоим кодом - всё это легко применяется и отдельно для PictureBox, только исчезает он вместе с картинкой - можешь как-нибудь попробовать наложить вместо букв картинку?

GeeZeR » 13.12.2007 (Чт) 22:45

В общем я конечно пошаманил не совсем представляя что делаю:

Код: Выделить всё
Imports System.Drawing.Drawing2D
Imports System.Drawing

Public Class Form1
Dim GP As New GraphicsPath
Dim P As New Pen(Color.Black, 5)


'---БЛОК для PictureBox2---
Private Sub PictureBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
Dim FF As New FontFamily("Arial BLack")
Dim Pnt As New PointF(0.0!, 150.0!)
Dim Rect As Rectangle = PictureBox2.ClientRectangle
Dim FS As FontStyle = FontStyle.Regular
Dim SF As New StringFormat()
SF.LineAlignment = StringAlignment.Center

GP.AddEllipse(PictureBox2.ClientRectangle)
GP.AddString("Round", FF, FS, 100.0!, Pnt, SF)
PictureBox2.Region = New Region(GP)
End Sub

Private Sub PictureBox2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox2.Paint
e.Graphics.FillPath(Brushes.AliceBlue, GP)
e.Graphics.DrawPath(P, GP)


'---Блок для PictureBox3---
Private Sub PictureBox3_BackColorChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox3.BackColorChanged
Dim FF As New FontFamily("Arial BLack")
Dim Pnt As New PointF(0.0!, 150.0!)
Dim Rect As Rectangle = PictureBox3.ClientRectangle
Dim FS As FontStyle = FontStyle.Regular
Dim SF As New StringFormat()
SF.LineAlignment = StringAlignment.Center

GP.AddEllipse(PictureBox3.ClientRectangle)
GP.AddString("Round", FF, FS, 100.0!, Pnt, SF)
PictureBox3.Region = New Region(GP)
End Sub

Private Sub PictureBox3_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox3.Paint
e.Graphics.FillPath(Brushes.AliceBlue, GP)
e.Graphics.DrawPath(P, GP)
End Sub
'-------------------------------------------------------------------------------

Я вместо формы подставил этот код для PictureBox, и изменил события : для PictureBox2 - Click, а для PictureBox3 - BackColorChanged (ставил LoadCompleted, но эффекта не было).

Изображение

Вид в дизайнере:

Изображение

Если закомментировать блок для PictureBox3, и кликнуть на левой двери (PictureBox2), то получим такое:

Изображение

Если закомментировать блок для PictureBox2, то получим такое:

Изображение

Если раскомментировать оба блока и кликнуть на левой двери, то будет так:

Тут почему-то рисунок PictureBox3 появился на PictureBox2.

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

Короче всё это фигня. Мне кажется можно попробовать под рисунок двери просто подложить бэкграунд и передавать ему изображение того, что находится под пикчербоксом. То есть снять координаты пикчербокса, его размеры, и сделать скриншот того что под ним и передать это бэкграунду. Если кто-то может - прошу помочь.

Nord777 » 15.12.2007 (Сб) 15:45

Применительно к твоему рисунку двери.
Код: Выделить всё Imports System.Drawing.Drawing2D

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim GP1 As New GraphicsPath
Dim Reg As New Region

Reg.MakeEmpty()
Reg.Union(New Rectangle(0, 33, 128, 95))

GP1.AddEllipse(New Rectangle(0, -1, 126, 75))
Reg.Union(GP1)
PictureBox2.Region = Reg
End Sub
End Class

GeeZeR » 15.12.2007 (Сб) 22:16

Nord777 спасибо, но это всё полумеры. А если сложный рисунок будет?
Вот с помощью твоего кода получилосьчто-то похожее на решение, но с побочными эффектами:

Код: Выделить всё Public Class Form1

Dim ImgWall As Bitmap = Image.FromFile("img\wall.jpg")

Private Sub Form1_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleCreated
Me.DoubleBuffered = True
End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim G As Graphics = e.Graphics
G.DrawImage(ImgWall, 59, 25)
End Sub

End Class
(Файл проекта ниже)

Если отрисовать фоновый рисунок с помощью самой формы (в данном случае - стена), а сверху просто накладывать PictureBox со свойством BackColor=Transparent , то PictureBox станет прозрачным, но с небольшими глюками: PictureBox расположенный выше (PictureBox2), своей частью не закрытой рисунком будет просвечивать фон сквозь другой PictureBox расположенный ниже (PictureBox1):

Изображение

Соответственно сквозь более верхний PictureBox ничего не просвечивается (PictureBox3).
В принципе пользоваться можно.

Nord777 можно ли сделать кпримеру так: залить нейтральным цветом прозрачные участки рисунка, затем оформить их в виде фигуры и вырезать её из пикчербокса с помощью .Region как в твоём предыдущем посте? То есть не подгонять программно эллипс под рисунок двери, а как-то представить эти углы в виде фигуры да и вырезать нафиг, программно или хз. Определить по цвету эти ненужные пиксели и вырезать.

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

Как поменять цвет фона элементов в Windows Forms

В данной статье мы разберем несколько вариантов изменения цвета элементов Windows Forms на примере фона формы Form1 и прочих компонентов.

Способ №1. Изменение цвета в свойствах элемента.

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

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

Выберем для примера какой-либо из цветов, чтобы изменить фон формы:

Легко, незамысловато, понятно.

Следующие способы будут производиться в коде.

Способ №2. Изменение цвета, используя структуру Color.

Это самый простой способ среди кодовых вариаций.

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

При запуске форма будет выглядеть так:

Если понадобится изменить цвет, например, кнопки Button на тёмно-бордовый, код будет таким:

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

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

Способ №3. Изменение цвета, используя метод Color.Argb.

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

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

Словесно это выглядит вот так:

Названиеэлементаформы.BackColor = Color.FromArgb(Насыщенность красного, Насыщенность зеленого, Насыщенность синего);

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

Читайте также: