c#渐变效果的窗体背景
2013-03-07 13:35
357 查看
public enum WindowStyle : uint
{
WS_OVERLAPPED = 0x00000000,
WS_POPUP = 0x80000000,
WS_CHILD = 0x40000000,
WS_MINIMIZE = 0x20000000,
WS_VISIBLE = 0x10000000,
WS_DISABLED = 0x08000000,
WS_CLIPSIBLINGS = 0x04000000,
WS_CLIPCHILDREN = 0x02000000,
WS_MAXIMIZE = 0x01000000,
WS_CAPTION = 0x00C00000,
WS_BORDER = 0x00800000,
WS_DLGFRAME = 0x00400000,
WS_VSCROLL = 0x00200000,
WS_HSCROLL = 0x00100000,
WS_SYSMENU = 0x00080000,
WS_THICKFRAME = 0x00040000,
WS_GROUP = 0x00020000,
WS_TABSTOP = 0x00010000,
WS_MINIMIZEBOX = 0x00020000,
WS_MAXIMIZEBOX = 0x00010000,
WS_TILED = WS_OVERLAPPED,
WS_ICONIC = WS_MINIMIZE,
WS_SIZEBOX = WS_THICKFRAME,
WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW,
WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU |
WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX),
WS_POPUPWINDOW = (WS_POPUP | WS_BORDER | WS_SYSMENU),
WS_CHILDWINDOW = (WS_CHILD)
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
if (!DesignMode)
{
cp.ExStyle |= (int)WindowStyle.WS_CLIPCHILDREN;
}
return cp;
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
DrawFromAlphaMainPart(this, e.Graphics);
}
#region Private
/// <summary>
/// 绘制窗体主体部分白色透明层
/// </summary>
/// <param name="form"></param>
/// <param name="g"></param>
public static void DrawFromAlphaMainPart(Form form, Graphics g)
{
Color[] colors =
{
Color.FromArgb(5, Color.White),
Color.FromArgb(30, Color.White),
Color.FromArgb(145, Color.White),
Color.FromArgb(150, Color.White),
Color.FromArgb(30, Color.White),
Color.FromArgb(5, Color.White)
};
float[] pos =
{
0.0f,
0.04f,
0.10f,
0.90f,
0.97f,
1.0f
};
ColorBlend colorBlend = new ColorBlend(6);
colorBlend.Colors = colors;
colorBlend.Positions = pos;
RectangleF destRect = new RectangleF(0, 0, form.Width, form.Height);
using (LinearGradientBrush lBrush = new LinearGradientBrush(destRect, colors[0], colors[5], LinearGradientMode.Vertical))
{
lBrush.InterpolationColors = colorBlend;
g.FillRectangle(lBrush, destRect);
}
}
#endregion
{
WS_OVERLAPPED = 0x00000000,
WS_POPUP = 0x80000000,
WS_CHILD = 0x40000000,
WS_MINIMIZE = 0x20000000,
WS_VISIBLE = 0x10000000,
WS_DISABLED = 0x08000000,
WS_CLIPSIBLINGS = 0x04000000,
WS_CLIPCHILDREN = 0x02000000,
WS_MAXIMIZE = 0x01000000,
WS_CAPTION = 0x00C00000,
WS_BORDER = 0x00800000,
WS_DLGFRAME = 0x00400000,
WS_VSCROLL = 0x00200000,
WS_HSCROLL = 0x00100000,
WS_SYSMENU = 0x00080000,
WS_THICKFRAME = 0x00040000,
WS_GROUP = 0x00020000,
WS_TABSTOP = 0x00010000,
WS_MINIMIZEBOX = 0x00020000,
WS_MAXIMIZEBOX = 0x00010000,
WS_TILED = WS_OVERLAPPED,
WS_ICONIC = WS_MINIMIZE,
WS_SIZEBOX = WS_THICKFRAME,
WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW,
WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU |
WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX),
WS_POPUPWINDOW = (WS_POPUP | WS_BORDER | WS_SYSMENU),
WS_CHILDWINDOW = (WS_CHILD)
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
if (!DesignMode)
{
cp.ExStyle |= (int)WindowStyle.WS_CLIPCHILDREN;
}
return cp;
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
DrawFromAlphaMainPart(this, e.Graphics);
}
#region Private
/// <summary>
/// 绘制窗体主体部分白色透明层
/// </summary>
/// <param name="form"></param>
/// <param name="g"></param>
public static void DrawFromAlphaMainPart(Form form, Graphics g)
{
Color[] colors =
{
Color.FromArgb(5, Color.White),
Color.FromArgb(30, Color.White),
Color.FromArgb(145, Color.White),
Color.FromArgb(150, Color.White),
Color.FromArgb(30, Color.White),
Color.FromArgb(5, Color.White)
};
float[] pos =
{
0.0f,
0.04f,
0.10f,
0.90f,
0.97f,
1.0f
};
ColorBlend colorBlend = new ColorBlend(6);
colorBlend.Colors = colors;
colorBlend.Positions = pos;
RectangleF destRect = new RectangleF(0, 0, form.Width, form.Height);
using (LinearGradientBrush lBrush = new LinearGradientBrush(destRect, colors[0], colors[5], LinearGradientMode.Vertical))
{
lBrush.InterpolationColors = colorBlend;
g.FillRectangle(lBrush, destRect);
}
}
#endregion
相关文章推荐
- 窗体渐变效果 (C#winfrom)
- 窗体渐变效果 (C#winfrom)
- 【C#】[窗体]渐变窗口背景
- C#实现窗体渐变效果
- 用C#制作飘动的窗体效果
- JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
- FLEX4 背景 渐变效果!
- CSS Filter 代替 图片 实现 渐变背景效果。
- ios每日源码,侧滑菜单精美动画曲线表弹性碰撞效果视频播放器渐变背景动画效果源码
- 使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
- C#实现具有Aero效果的窗体
- c# 当窗体设置成无边框后,如何实现拖动效果,简洁实用
- 【Android 界面效果20】Android GradientDrawable类的详解,设置activity的背景颜色渐变效果
- css背景颜色渐变效果
- Android使用XML的方式为背景添加渐变,描边,圆角的效果
- C# WinForm 关于窗体最大化时的是否全屏效果与是否遮盖任务栏
- 在C#中调用系统API使窗体下拥有阴影效果
- c#按钮透明及窗体关闭时产生透明渐变
- 用C#实现窗体效果
- Android GradientDrawable类的详解,设置activity的背景颜色渐变效果