一、改变窗体的大小
Windows窗体是可以随意改变大小的,然而对于一些要求严格的窗体,开发人员不希望用户随意的改变其大小,例如,定位准确的地图和游戏软件等。遇到这种情况必须对窗口的大小进行一些限制。本例设计一个限制了大小的窗体,用户虽然可以改变其大小,但是,大小的范围是受到限制的。
技术要点 在此C#中实现限制大小非常方便,只要设置窗体的最大和最小范围即可。下面介绍一下相关属性。 Form.MinimumSize属性用来获取或设置窗体可调整到的最小大小,其语法格式如下: public override Size MinimumSize { get; set; } 属性值:Size,表示该窗体的最小大小。 Form.MaximumSize属性用来获取或设置窗体可调整到的最大大小,其语法格式如下: public override Size MaximumSize{ get; set; } 属性值:Size,表示该窗体的最大大小。实现过程 (1)创建一个项目,默认窗体为Form1。 (2)主要程序代码。 private void Form1_Load( object sender, EventArgs e) { MinimumSize = new Size( 200, 200); MaximumSize = new Size( 400, 400); }
private void Form1_Load( object sender, EventArgs e) { ControlBox = false; }
三、获取桌面大小 获取桌面分辨率可以使用API函数GetDeviceCaps,但API函数参数较多,使用不方便,如何更方便的获取桌面分辨率呢?在本例中,通过读取Screen对象的属性,来获取桌面分辨率信息,以像素为单位 C#中提供了Screen对象,在该对象中封装了屏幕相关信息。可以通过读取Screen对象的相关属性,来获取屏幕的信息,
Screen.PrimaryScreen.WorkingArea.Width用于读取桌面宽度;
Screen.PrimaryScreen.WorkingArea.Height可以读取桌面的高度。
下面介绍一下相关属性。
Screen.PrimaryScreen.WorkingArea属性用于获取显示器的工作区。工作区是显示器的桌面区域,不包括任务栏、停靠窗口和停靠工具栏。其结构如下:
public Rectangle WorkingArea { get; } 属性值:一个Rectangle,表示显示器的工作区。实现过程 (1)创建一个项目,默认窗体为Form1。 (2)在Form1窗体上添加一个Button控件,用来获取桌面大小;添加两个TextBox控件,用来输出所获取的桌面大小。 (3)主要程序代码。 private void button1_Click( object sender, EventArgs e) { textBox2.Text = Screen.PrimaryScreen.WorkingArea.Height.ToString( ); textBox1.Text = Screen.PrimaryScreen.WorkingArea.Width.ToString( ); }
namespace SpecialSharpWindows { public partial class Form1 : Form { Bitmap bit; public Form1() { InitializeComponent(); } //设置图片透明颜色的实现。代码如下: private void Form1_Load( object sender, EventArgs e) { bit = new Bitmap( " 1.bmp "); bit.MakeTransparent(Color.Blue); }
//重写基类方法的实现。代码如下:
protected override void OnPaint(PaintEventArgs e) { e.Graphics.DrawImage((Image)bit, new Point( 0, 0)); } private void label1_Click( object sender, EventArgs e) { this.Close(); } } }
总结 根据本实例,可以制作圆形的窗体\制作锯齿状的窗体。 五、设计颜色渐变的窗体 在程序设计时,可以通过设置窗体的BackColor属性来改变窗口的背景颜色。但是这个属性改变后整个窗体的客户区都会变成这种颜色,并且非常单调。如果窗体的客户区可以向标题栏一样能够体现颜色的渐变效果,那么窗体风格将会另有一番风味。本例设计了一个颜色渐变的窗体。技术要点 C#中可以通过Color.FromArgb( )方法返回一种颜色,下面详细介绍一下该方法。 Color.FromArgb( )方法用来返回Color的颜色值,该方法语法结构如下: public static Color FromArgb ( int red, int green, int blue ) 参数说明如下。 red:新Color的红色分量值。有效值为从0~255。 green:新Color的绿色分量值。有效值为从0~255。 blue:新Color的蓝色分量值。有效值为从0~255。 返回值:此方法创建的Color。 该函数就是用3种不同的色值来返回一个颜色,而稍微的调整某一种颜色值就可以使整体的颜色发生细微的变化,在窗体中至上而下每行填充一种稍微调整后的颜色,这样整体看来就会产生渐变的效果。可以利用窗体的Graphics对象对窗体进行绘图,该对象可以完全操控窗体的客户区。 注意:颜色值在0~255之间。 实现过程 (1)创建一个项目,默认窗体为Form1。 (2)在Form1窗体中添加Button用来使颜色渐变;添加TextBox控件用来输入颜色RGB值。 (3)主要程序代码。 触发重新绘制事件的实现代码如下:
private void button2_Click( object sender, EventArgs e) { InvokePaintBackground( ); this.Hide( ); this.Visible= true; }
重新绘制窗体背景颜色的实现代码如下:
protected override void OnPaintPaintEventArgs 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; } }
总结
根据本实例,可以开发以下程序: 1、把窗体设置成单一的颜色。 2、利用Timer组体,使窗体动态改变颜色。