1、窗口颜色的渐变
C#中可以通过Color.FromArgb( )方法返回一种颜色。
Color.FromArgb( )方法用来返回Color的颜色值,该方法语法结构如下:
public static Color 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对象对窗体进行绘图,该对象可以完全操控窗体的客户
区。
触发重新绘制事件的实现代码如下:
private void button2_Click(object sender, EventArgs e)
{
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;
}
}
其实textBox1和textBox2分别为输入r、b分量的文本框。
2、通过设置Form.Opacit属性设置窗体的不透明级别。
如渐显窗体,用Timer控件控制。
private void timer1_Tick(object sender, EventArgs e)
{
this.Opacity += 0.1;
}
private void timer1_Tick(object sender, EventArgs e)//用Timer来控制滚动速度
{
label1.Left -= 2;
if (label1.Right < 0)
{
label1.Left = this.Width;
}
}
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参数是动画效果类型选项
实例:
public partial class Form1 : Form
{
public const Int32 AW_HOR_POSITIVE = 0x00000001; //自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略
public const Int32 AW_HOR_NEGATIVE = 0x00000002;//自右向左显示窗口。当使用了 AW_CENTER 标志时该标志被忽略
public const Int32 AW_VER_POSITIVE = 0x00000004; //自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略
public const Int32 AW_VER_NEGATIVE = 0x00000008;//自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略
public const Int32 AW_CENTER = 0x00000010;//若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展
public const Int32 AW_HIDE = 0x00010000;//隐藏窗口,缺省则显示窗口
public const Int32 AW_ACTIVATE = 0x00020000;//激活窗口。在使用了AW_HIDE标志后不要使用这个标志
public const Int32 AW_SLIDE = 0x00040000;//使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略
public const Int32 AW_BLEND = 0x00080000; //使用淡入效果。只有当hWnd为顶层窗口的时候才可以使用此标志
public Form1()
{
InitializeComponent();
AnimateWindow(this.Handle, 500, AW_SLIDE + AW_VER_NEGATIVE);
}
[DllImportAttribute("user32.dll")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
AnimateWindow(this.Handle, 300, AW_SLIDE + AW_VER_NEGATIVE + AW_HIDE);
}
}
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控件每隔一段时间就调用该函数使窗体闪烁。
代码:
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern bool FlashWindow(IntPtr handle, bool bInvert);
private void timer1_Tick(object sender, EventArgs e)
{
FlashWindow(this.Handle,true);
}
从工具箱“选择项”中将Microsoft Animation Control 6.0(SP4)COM组件添加到工具箱,然后继续将该组件从工具箱添加到窗体即可,如图所示:
AxAnimation.open方法用来播放动画文件。其结构如下:
Public void AxAnimation.open(string bstrFilename)
参数说明如下。
l bstrFilename:将要播放的文件名。
注意:因为使用了AxAnimation类,所以要添加对WMPLib命名空间的引用。
代码:
private void Form1_Load(object sender, EventArgs e)
{
axAnimation1.Open("Electron.avi");
axAnimation2.Open("zybiao.avi");
axAnimation3.Open("gd.avi");
}
7、(1)将窗体的RightToLeft属性设置为Yes即可实现使窗体标题栏文字右对齐。
(2)将窗体的Text属性设为空,同时将ControlBox属性设为False可使窗体没有标题栏。
获取桌面大小:
(3) this.Left = Convert.ToInt32(textBox1.Text);
this.Top = Convert.ToInt32(textBox2.Text);
用来设置窗体在屏幕中的位置。
(4)将TopMost属性设为True即可实现使窗体始终在最上层。
(5)textBox2.Text = Screen.PrimaryScreen.WorkingArea.Height.ToString( );
textBox1.Text = Screen.PrimaryScreen.WorkingArea.Width.ToString( );
获取桌面大小。
(6) 在窗口间移动按钮
窗体中每个可视控件都有所有者和父对象两个重要属性,所有者是控件建立时指定的所属对象,该对象可以是不可视控件,而父对象必须是可视控件。因此可以通过窗
体中可视控件的Parent属性来判断控件是否在这个窗体中,还可以用Form.Controls.Add( )方法为窗体添加控件。
代码:
Form2 f;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (button1.Parent == this)
{
f.Controls.Add(this.button1);
this.button1.Text = "返回原地";
}
else
{
this.Controls.Add(button1);
this.button1.Text = "开始移动";
}
}
private void Form1_Load(object sender, EventArgs e)
{
f = new Form2();
f.Show();


浙公网安备 33010602011771号