Цвет фона формы установлен на оттенок - PullRequest
3 голосов
/ 29 декабря 2011

Как мне установить цвет фона для формы, как указано в прикрепленном изображении?

enter image description here

Ответы [ 2 ]

5 голосов
/ 29 декабря 2011

Одним из способов будет использование изображения в качестве формы BackgroundImage.

.

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

protected override void OnPaintBackground(PaintEventArgs e)
{
    using (var brush = new LinearGradientBrush
               (DisplayRectangle, Color.Black, Color.DarkGray, LinearGradientMode.Vertical))
    {
        e.Graphics.FillRectangle(brush, DisplayRectangle);
    }
}

protected override void OnResize(EventArgs e)
{
    base.OnResize(e);
    Invalidate(); // Force repainting on resize
}

Результат

Gradient

2 голосов
/ 29 декабря 2011

Использование может использовать OnPaint event из winform, и там вы можете сделать некоторые изменения.Проверьте указанные ссылки, чтобы узнать подробности об этом.

Используйте LinearGradientBrush, чтобы сделать это следующим образом:

/ * Возьмите кисть с линейным градиентом * /

LinearGradientBrush brush = new LinearGradientBrush(rect, Color.Orange, Color.Orchid, LinearGradientMode.ForwardDiagonal);

Фрагмент кода перегрузки OnPaint:

 Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)

        ' Declare a variable of type Graphics named formGraphics.

        ' Assign the address (reference) of this forms Graphics object

        ' to the formGraphics variable.

        Dim formGraphics As Graphics = e.Graphics

        ' Declare a variable of type LinearGradientBrush named gradientBrush.

        ' Use a LinearGradientBrush constructor to create a new LinearGradientBrush object.

        ' Assign the address (reference) of the new object

        ' to the gradientBrush variable.

        Dim gradientBrush As New LinearGradientBrush(New Point(0, 0), New Point(Width, 0), Color.White, Color.DarkMagenta)



        ' Here are two more examples that create different gradients.

        ' Comment the Dim statement immediately above and uncomment one of these

        ' Dim statements to see how varying the two colors changes the gradient result.

        ' Dim gradientBrush As New LinearGradientBrush(New Point(0, 0), New Point(Width, 0), Color.Chartreuse, Color.SteelBlue)

        ' Dim gradientBrush As New LinearGradientBrush(New Point(0, 0), New Point(Width, 0), Color.White, Color.SteelBlue)



        formGraphics.FillRectangle(gradientBrush, ClientRectangle)

    End Sub

Другой способ - использовать OnPaintBackground событие и использовать LinearGradientBrush ref: MSDN

protected override void OnPaintBackground(PaintEventArgs e) {
      Rectangle rc = new Rectangle(0, 0, this.ClientSize.Width, this.ClientSize.Height);
      using (LinearGradientBrush brush = new LinearGradientBrush(rc, Color.Red, Color.Blue, 45F)) {
        e.Graphics.FillRectangle(brush, rc);
      }

Ссылка:
Как добавить градиентный фон в форму победы с VB.NET и VB2005
Windows Forms 2.0-Draw Красивые фоновые градиенты
Установите для градиента / затененного фона форму Windows, используя c #

Проверьте Resize связанную информацию здесь: this.Invalidate() -
Создайте фон градиента на ваших формах или элементах управления

проверьте также эту ветку SO .. Прозрачные контрольные фоны в заполненной градиентом форме VB.NET?

...