winform界⾯特效470多例
⼀共470多例winform 界⾯特效的源码。
实例030 窗⼝颜⾊的渐变
实例说明
在程序设计时,可以通过设置窗体的BackColor属性来改变窗⼝的背景颜⾊。但是这个属性改变后整个窗体的客户区都会变成这种颜⾊,并且⾮常单调。如果窗体的客户区可以向标题栏⼀样能够体现颜⾊的渐变效果,那么窗体风格将会另有⼀番风味。本例设计了⼀个颜⾊渐变的窗体。效果如图1.30所⽰。
技术要点
C#中可以通过Color.FromArgb( )⽅法返回⼀种颜⾊,下⾯详细介绍⼀下该⽅法。
Color.FromArgb( )⽅法⽤来返回Color的颜⾊值,该⽅法语法结构如下:
public static FromArgb (
int red,
int green,
int blue
)
参数说明如下。
l    red:新Color的红⾊分量值。有效值为从0~255。
l    green:新Color的绿⾊分量值。有效值为从0~255。
l    blue:新Color的蓝⾊分量值。有效值为从0~255。
l    返回值:此⽅法创建的Color。
该函数就是⽤3种不同的⾊值来返回⼀个颜⾊,⽽稍微的调整某⼀种颜⾊值就可以使整体的颜⾊发⽣细微的变化,在窗体中⾄上⽽下每⾏填充⼀种稍微调整后的颜⾊,这样整体看来就会产⽣渐变的效果。可以利⽤窗体的Graphics对象对窗体进⾏绘图,该对象可以完全操控窗体的客户区。
注意:颜⾊值在0~255之间。
实现过程
(1)创建⼀个项⽬,将其命名为Ex01_30,默认窗体为Form1。
(2)在Form1窗体中添加Button⽤来使颜⾊渐变;添加TextBox控件⽤来输⼊颜⾊RGB值。
(3)主要程序代码。
触发重新绘制事件的实现代码如下:
private void button2_Click(object sender, EventArgs e)
{
InvokePaintBackground( );
this.Hide( );
this.Visible=true;
}
重新绘制窗体背景颜⾊的实现代码如下:
protected override void OnPaintBackground(PaintEventArgs e)
{
int y, dy;
y = this.ClientRectangle.Location.Y;
dy = this.ClientRectangle.Height / 256;
for (int i = 255; i >= 0; i--)
{
Color c = new Color( );
c = Color.FromArgb(Convert.ToInt32(textBox1.Text.ToString( )), i,Convert.ToInt32(textBox2.Text.ToString( )));
SolidBrush sb = new SolidBrush(c);
Pen p = new Pen(sb, 1);
e.Graphics.DrawRectangle(p,this.ClientRectangle.X, y, this.Width,y+dy);
y = y + dy;
}
}
举⼀反三
根据本实例,读者可以开发以下程序。
把窗体设置成单⼀的颜⾊。
利⽤Timer组体,使窗体动态改变颜⾊。
1.9  窗体动画
本节主要对窗体进⾏动画设置,在窗体上添加⼀些动画效果,可以为操作者添加⼀些乐趣,下⾯的⼏个例⼦将详细介绍窗体动画的相关技术。
实例031 窗体中的滚动字幕
实例说明
普通窗体中的⽂字位置都是固定的,⼀些窗体中需要让⽂字动起来,例如⼀些⼴告性较强的界⾯中需要做⼀些滚动的字幕。本例实现了⼀个具有滚动字幕效果的窗体,运⾏本例,单击【演⽰】按钮,看到窗⼝中的⽂字开始滚动。单击【暂停】按钮,可以使字幕停⽌滚动。本例运⾏效果如图1.31所⽰。
技术要点
滚动字幕的效果其实就是改变了⽂字的位置,在窗体中显⽰⼀串⽂字最好的办法就是利⽤Label控件。将Label控件的位置改变就可以实现⽂字的位置变换,如果该控件的位置不断的向⽔平⽅向移动,就会实现⽂字的滚动效果。改变Label控件的⽔平位置可以通过改变Label控件的Left的值来实现。⽤Timer控件对⽂字的移动进⾏时间控制。
实现过程
(1)创建⼀个项⽬,将其命名为Ex01_31,默认窗体为Form1。
(2)在窗体上添加Label控件⽤来显⽰消息;添加Button控件⽤来控制消息的运动;添加Timer控件⽤来控制滚动速度。
(3)主要程序代码。
private void timer1_Tick(object sender, EventArgs e)//⽤Timer来控制滚动速度
{
label1.Left -= 2;
if (label1.Right < 0)
{
label1.Left = this.Width;
}
}
private void button1_Click(object sender, EventArgs e)
{
dw滚动文字代码
timer1.Enabled = true; //开始滚动
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false; //停⽌滚动
}
注意:要特别注意⽂字滚动的⽅向问题,向左则减,向右则加。
举⼀反三
根据本实例,读者可以开发以下程序。
可以在窗体中设置⼀个滚动的图⽚。
可以在窗体中设置⼀个滚动的提⽰信息。
实例032 动画显⽰窗体
实例说明
当⽤户启动程序后,普通的程序窗⼝都是瞬间显⽰到屏幕上,这样未免有些⽣硬。如果窗⼝能够慢慢的展现在⽤户⾯前,将会是什么样的效果?本例设计的是⼀个动画显⽰的窗体,该程序运⾏后,窗体是慢慢的以拉伸的效果显⽰到⽤户的⾯前。当关闭时也是⼀样慢慢的消失。本例运⾏效果如图1.32所⽰。
技术要点
Windows提供了⼀个API函数Animate Window,该函数可以实现窗体的动画效果,AnimateWindow函数在C#中的声明如下。
[DllImportAttribute("user32.dll")]
private static extern bool AnimateWindow(IntPtr  hwnd, int  dwTime, int  dwFlags);
参数说明如下。
l    hwnd:⽬标窗⼝句柄。
l    dwTime:动画的持续时间,数值越⼤动画效果的时间就越长。
l    DwFlags:DwFlags参数是动画效果类型选项,该参数在C#中的声明如下:
public const Int32 AW_HOR_POSITIVE = 0x00000001;
public const Int32 AW_HOR_NEGATIVE = 0x00000002;
public const Int32 AW_VER_POSITIVE = 0x00000004;
public const Int32 AW_VER_NEGATIVE = 0x00000008;
public const Int32 AW_CENTER = 0x00000010;
public const Int32 AW_HIDE = 0x00010000;
public const Int32 AW_ACTIVATE = 0x00020000;
public const Int32 AW_SLIDE = 0x00040000;
public const Int32 AW_BLEND = 0x00080000;
DwFlags参数可选值含义如表1.1所⽰
表1.1                                                                  参数说明
标志描述
AW_SLIDE使⽤滑动类型。缺省则为滚动动画类型。当使⽤AW_CENTER标志时,这个标志就被忽略
AW_ACTIVE激活窗⼝。在使⽤了AW_HIDE标志后不要使⽤这个标志
AW_BLEND使⽤淡⼊效果。只有当hWnd为顶层窗⼝的时候才可以使⽤此标志
AW_HIDE隐藏窗⼝,缺省则显⽰窗⼝
AW_CENTER若使⽤了AW_HIDE标志,则使窗⼝向内重叠;若未使⽤AW_HIDE标志,则使窗⼝向外扩展
AW_HOR_POSITIVE⾃左向右显⽰窗⼝。该标志可以在滚动动画和滑动动画中使⽤。当使⽤AW_CENTER标志时,该标志将被忽
AW_HOR_NEGATIVE⾃右向左显⽰窗⼝。当使⽤了 AW_CENTER 标志时该标志被忽略
AW_VER_POSITIVE⾃顶向下显⽰窗⼝。该标志可以在滚动动画和滑动动画中使⽤。当使⽤AW_CENTER标志时,该标志将被忽
AW_VER_NEGATIVE⾃下向上显⽰窗⼝。该标志可以在滚动动画和滑动动画中使⽤。当使⽤AW_CENTER标志时,该标志将被忽
实现过程
(1)创建⼀个项⽬,将其命名为Ex01_32,默认窗体为Form1。
(2)在窗体上添加PictureBox控件。
(3)设置PictureBox控件的Image属性。
(4)主要代码如下。
public Form1( )
{
InitializeComponent( );
AnimateWindow(this.Handle, 300, AW_SLIDE + AW_VER_NEGATIVE);//开始窗体动画
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{  //结束窗体动画
AnimateWindow(this.Handle, 300, AW_SLIDE + AW_VER_NEGATIVE + AW_HIDE);
}
举⼀反三
根据本实例,读者可以开发以下程序。
实现窗体的淡⼊淡出。
实现窗体从中间扩散显⽰。
实例033 制作闪烁的窗体
实例说明
Windows系统中,当程序在后台运⾏时,如果某个窗⼝的提⽰信息需要⽤户浏览,该窗⼝就会不停的闪烁,这样就会吸引⽤户的注意。同样,如果在⾃⼰的程序中使某个窗⼝不停的闪烁就会吸引⽤户的注意。本例设计了⼀个闪烁的窗体,运⾏程序,单击【开始闪烁】按钮,窗体就会不停的闪烁,单击【停⽌】按钮,窗体就会停⽌闪烁。本例运⾏效果如图1.33所⽰。
技术要点
Windows提供了⼀个API函数FlashWIndow,该函数可以使窗体闪烁⼀下。FlashWIndow函数在C#中声明如下:
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern bool FlashWindow(IntPtr handle, bool bInvert);
参数说明如下。
l    handle:表⽰将要闪烁的窗体。
l    bInvert:是否恢复状态。
利⽤该函数只能使窗体闪烁⼀下,如果让窗⼝不停地闪烁,就需要⽤⼀个Timer控件每隔⼀段时间就调⽤该函数使窗体闪烁。
实现过程
(1)创建⼀个项⽬,将其命名为Ex01_33,默认窗体为Form1。
(2)在窗体上添加PictureBox控件⽤来显⽰窗体;添加Button、Timer控件⽤来开始和停⽌闪烁。
(3)设置PictureBox控件的Image属性。
(4)主要程序代码。
timer1的Tick事件处理代码如下:
private void timer1_Tick(object sender, EventArgs e)
{
FlashWindow(this.Handle,true);
}
【开始闪烁】按钮的单击事件,⽤来启动窗体闪烁:
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
【停⽌】按钮的单击事件,⽤来停⽌窗体的闪烁:
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
举⼀反三
根据本实例,读者可以开发以下程序。
利⽤Visible属性制作⼀个闪烁的图⽚。
制作⼀个闪烁的按钮。
实例034 直接在窗体上绘图
实例说明
含有Graphics对象的控件都能够在其上进⾏绘图,很多软件就是通过Graphics对象来美化程序的主界⾯,因为窗体中含有Graphics对象,所以可以将窗体看作⼀个⼤画板,⼀个可以在上⾯绘图的特殊控件。本例设计了⼀个简单的绘图软件,该软件就利⽤了在窗体上绘图的⽅法,运⾏本软件可以在窗体上进⾏绘图。实例效果如图1.34所⽰。
技术要点
窗体中含有Graphics对象,使⽤该对象就能够完成⼤部分绘图功能,Graphics对象已经对Windows底层的⼀些绘图API进⾏了封装,使⽤起来⽐较⽅便。下⾯介绍Graphics对象的常⽤⽅法。
Graphics.DrawLine绘图⽅法⽤来绘制⼀条连接由坐标对指定的两个点的线条。其语法结构如下:
public void DrawLine (Pen pen,int x1,int y1,int x2,int y2)
参数说明如下。
l    pen:Pen对象,确定线条的颜⾊、宽度和样式。
l    x1:第⼀个点的x坐标。
l    y1:第⼀个点的y坐标。
l    x2:第⼆个点的x坐标。
l    y2:第⼆个点的y坐标。
实现过程
(1)创建⼀个项⽬,将其命名为Ex01_34,默认窗体为Form1。
(2)向Form1窗⼝中添加GroupBox控件,⽤作RadioButton控件的容器;添加Button控件⽤来推出程序。
(3)主要程序代码。
在窗体单元的private中添加变量如下:
int startX,startY;
Graphics g;
单击⿏标事件。具体代码如下:
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
startX=e.X;
startY = e.Y;
}
⿏标在窗体中的移动事件。具体代码如下:
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
g = this.CreateGraphics( );
Pen p = new Pen(Color.Black, 1);
if(radioButton2.Checked==true)
{
g.DrawRectangle(p, e.X, e.Y, 1, 1);
}
}
⿏标抬起事件。具体代码如下:
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
g = this.CreateGraphics( );
Pen p = new Pen(Color.Black, 2);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。