2011-12-29 4 views

ответ

5

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

Если вы хотите, чтобы достичь этого proceduarally (более гибкий), вы можете вручную рисовать фон форме, используя 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

+0

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

+1

Убедитесь, что анкеры установлены на «Нижняя, левая» и «Нижняя, правая» соответственно. – Ani

+0

Моя ошибка. Я немного изменил положение кнопки несколько минут назад, но забыл снова установить якоря. Теперь работаем хорошо. Большое вам спасибо – Rupesh

2

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

Используйте 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); 
     } 

Ссылка:
How to Add a Gradient Background to a Win Form with VB.NET & VB2005
Windows Forms 2.0-Draw Beautiful Gradient Backdrops
Set Gradient/Shaded Background to Windows form using c#

Проверить Resize сопутствующая информация здесь: this.Invalidate() -
Create a Gradient background on your Forms or Controls

проверить это SO нить тоже .. Transparent control backgrounds on a VB.NET gradient filled form?

Смежные вопросы