窗体界面设计02

 01.渐变色窗体

 Color颜色对象的FromArgb()方法的应用,语法结构:

 public static System.Drawing.Color FromArgb(int red,int green,int blue)

 Pen对象的应用

 Graphics对象的DrawRectangle方法,语法结构:

 public void DrawRectangle(System.Drawing.Pen pen,float x,float y,float width,float height)

代码
         protected   override   void  OnPaintBackground(PaintEventArgs e)
        {
            
base .OnPaintBackground(e);
            
int  y, dy;                               // 定义变量
            y  =   this .ClientRectangle.Location.Y;
            dy 
=   this .ClientRectangle.Height  /   256 ;
            
for ( int  i = 255 ;i >= 0 ;i -- )                  // 利用For循环语句渐变窗体背景
            {
                Color c
= new  Color();                 // 定义颜色对象案例
                
// 调用Color对象的FromArgb方法
                c = Color.FromArgb( 255 ,i, 0 );
                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;
            }
        }

        
private   void  Form1_DoubleClick( object  sender, EventArgs e)
        {
            
this .Close();
            Application.Exit();
        }

窗体界面设计02_第1张图片

 02.笑脸窗体

 Panel控件的应用

 GrahpicsPath类的应用

 Point点对象的应用

 AddString方法的应用,语法结构:

代码
public   void  AddString(
string  s,
System.Drawing.FontFamily family,
int  style,
float  emSize,
System.Drawing.Point origin,
System.Drawing.StringFormat format
)
参数意义:
s:要添加的System.String
family:一个System.Drawing.FontFamily,表示绘制文本所用字体的名称。
style:一个System.Drawing.FontStyle枚举,它表示有关文本的样式信息(粗体、斜体等),并且必须为整数。
emSize:限定字符的Em(字体大小)方框的高度。
origin:一个System.Drawing.Point,它表示文本从其起始的点。
format:指定文本格式设置信息(如行间距和对齐方式)的System.Drawing.StringFormat。
代码
         private   void  Form2_Load( object  sender, EventArgs e)
        {
            
this .Left  =  (SystemInformation.PrimaryMonitorMaximizedWindowSize.Width  -   this .Width)  /   2 ;
            
this .Top  =  (SystemInformation.PrimaryMonitorMaximizedWindowSize.Height  -   this .Height)  /   2 ;

            GraphicsPath gp 
=   new  GraphicsPath();                                // 创建GraphicsPath对象实例
                                                                                
// 定义矩形区域
            Rectangle rect  =   new  Rectangle( new  Point( 0 0 ),  new  Size( this .Width ,  this .Height));
            gp.AddEllipse(rect);                                                
// 绘制椭圆
             this .Region = new  Region(gp);

            GraphicsPath gpl
= new  GraphicsPath();
            Rectangle rectl
= new  Rectangle( new  Point( 0 , 0 ), new  Size( this .panel1.Width, this .panel1.Height));
            gpl.AddEllipse(rectl);
            
this .panel1.Region = new  Region(gpl);                                  // 绘制左眼

            GraphicsPath gpr 
=   new  GraphicsPath();
            Rectangle rectr 
=   new  Rectangle( new  Point( 0 0 ),  new  Size( this .panel2.Width,  this .panel2.Height));
            gpr.AddEllipse(rectr);
            
this .panel2.Region  =   new  Region(gpr);                                // 绘制右眼

            GraphicsPath myPath 
=   new  GraphicsPath();
            Rectangle rectm 
=   new  Rectangle( 0 0 this .panel3.Width,  this .panel3.Height);
            myPath.StartFigure();
            myPath.AddArc(rectm, 
0 180 );
            myPath.CloseFigure();
            
this .panel3.Region   =   new  Region(myPath);                            // 绘制嘴

            GraphicsPath gpp 
=   new  GraphicsPath();
            
string  stringText  =   " 退出 " ;
            FontFamily family 
=   new  FontFamily( " 宋体 " );
            
int  fontStyle  =  ( int )FontStyle.Bold;
            
int  emSize  =   20 ;
            Point origin 
=   new  Point( 20 20 );
            StringFormat format 
=  StringFormat.GenericDefault;                    // 绘制退出文字
            gpp.AddString(stringText, family, fontStyle, emSize, origin, format);
            
this .button1.Region  =   new  Region(gpp);
        }

        
private   void  button1_Click( object  sender, EventArgs e)
        {
            
if  (MessageBox.Show( " 你确定要退出吗? " " 提示信息 " , MessageBoxButtons.YesNo, MessageBoxIcon.Warning)  ==  DialogResult.Yes)
            {
                Application.Exit();
            }

        }

窗体界面设计02_第2张图片

 03.八边形图形窗体

 利用Graphics对象绘制图案,CreateGraphics方法创建Graphics对象案例

 Pen类的应用

 Brush类的应用:

 SolidBrush:画笔的最简单形式,它用纯色进行绘制

 LinearGradientBrush:使用两种颜色的渐变色进行绘制

 HatchBrush:与SolidBrush相似,但可以从大量预设的图案中选择要使用的图案,而不是纯色。

 TextureBrush:使用纹理进行绘制。

 PathGradientBrush:基于开发人员定义的惟一路径,使用复杂的混合色渐变进行绘制。

 Color类的应用

代码
using  System.Drawing.Drawing2D

        
private   void  timer1_Tick( object  sender, EventArgs e)
        {
            Graphics g 
=   this .CreateGraphics();                        // 定义Graphics对象实例
            Draw2D();                                                  // 调用函数Draw2D
        }

        
public   void  Draw2D()
        {
            
int  i;                                                     // 定义整型变量并赋值
             int  Sect  =   8 ;
            
float  r;
            
float [] x  =   new   float [ 31 ];                                 // 定义浮点型变量数组
             float [] y  =   new   float [ 31 ];
            
this .ClientSize  =   new  Size( 300 300 );
            r 
=   this .ClientSize.Width  /   2 ;
            Graphics g 
=   this .CreateGraphics();                        // 创建Graphics对象案例
             for  (i  =   0 ; i  <  Sect; i ++ )                                 // 利用For循环为数组赋值
            {
                x[i] 
=  ( float )(r  *  Math.Cos(i  *   2   *  Math.PI  /  Sect)  +   this .ClientSize.Width  /   2 );
                y[i] 
=  ( float )(r  *  Math.Sin(i  *   2   *  Math.PI  /  Sect)  +   this .ClientSize.Height  /   2 );
            }
            
for  ( int  m  =   0 ; m  <  Sect  -   1 ; m ++ )                         // 利用双For循环绘制图案
            {
                
for  ( int  n  =   0 ; n  <  Sect; n ++ )
                {
                    g.DrawLine(Pens.Red, x[m], y[m], x[n], y[n]);     
// 绘制红色的直线
                }
            }
        }


        
private   void  Form3_Load( object  sender, EventArgs e)
        {
            
this .timer1.Enabled  =   true ;                                // 计时器可用
             this .TopMost  =   true ;                                       // 总在最前
             this .StartPosition  =  FormStartPosition.CenterScreen;
        }

        
private   void  Form3_DoubleClick( object  sender, EventArgs e)
        {
            
this .Close();                                              // 关闭程序
        }

窗体界面设计02_第3张图片

 04.动态绘制直线和曲线

 MouseUp事件、MouseMove事件和MouseDown事件的应用

 Graphics对象的DrawLine()方法的应用,语法结构:

 public void DrawLine(System.Drawing.Pen pen,float x1,float y1,float x2,float y2)

 Graphics对象的DrawRectangle()方法的应用,语法结构:

 public void DrawRectangle(System.Drawing.Pen pen,float x,float y,float width,float height)

代码
         int  startX;          // 获取鼠标起始点的X坐标
         int  startY;          // 获取鼠标起始点的Y坐标
        Graphics g;          // 定义Graphics对象实例

        
private   void  Form1_Load( object  sender, EventArgs e)
        {
            
this .StartPosition  =  FormStartPosition.CenterScreen;
            
this .BackColor  =  Color.Snow;         // 设置窗体背景颜色
        }

        
private   void  Form1_MouseUp( object  sender, MouseEventArgs e)
        {
            g 
=   this .CreateGraphics();           // 创建Graphics对象实例
            Pen p  =   new  Pen(Color.Red,  4 );       // 设置画笔颜色和宽度
             if  (radioButton1.Checked  ==   true )
            {
                g.DrawLine(p, startX, startY, e.X, e.Y);
            }
        }

        
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.Blue,  2 );      // 设置画笔颜色和宽度
             if  (radioButton2.Checked  ==   true )
            {
                g.DrawRectangle(p, e.X, e.Y, 
1 1 );  // 绘制曲线
            }

        }

        
private   void  button1_Click( object  sender, EventArgs e)
        {
            g 
=   this .CreateGraphics();
            g.Clear(Color.Snow);                    
// 清空窗体背景
        }

        
private   void  button2_Click( object  sender, EventArgs e)
        {
            
this .Close();
            Application.Exit();
        }

窗体界面设计02_第4张图片

 05.动态绘制验证码

 产生随机数的Random类的应用

 Bitmap对象的SetPixel()方法的应用,语法结构:

 Public void SetPixel(int x,int y,System.Drawing.Color color)

代码
         private   string  CheckCode()
        {
            
int  number;                                               // 定义变量
             char  code;
            
string  checkCode  =  String.Empty;
            Random random 
=   new  Random();                             // 产生非负随机数
             for  ( int  i  =   0 ; i  <   4 ; i ++ )                               // 利用For循环产生4由英文字母或数字组成的字符串
            {
                number 
=  random.Next();
                
if  (number  %   2   ==   0 )
                    code 
=  ( char )( ' 0 '   +  ( char )(number  %   10 ));         // 随机数字
                 else
                    code 
=  ( char )( ' A '   +  ( char )(number  %   26 ));         // 随机字母
                checkCode  +=   "   "   +  code.ToString();
            }
            
return  checkCode;                                         // 返回产生的随机数字和字母
        }

        
private   void  CodeImage( string  checkCode)
        {
            
if (checkCode == null || checkCode.Trim() == String.Empty)
            {
                
return ;
            }
            System.Drawing.Bitmap image
= new  System.Drawing.Bitmap(( int )Math.Ceiling((checkCode.Length * 50.0 )), 50 );
            Graphics g
= Graphics.FromImage(image);
            
try
            {
                Random random
= new  Random();                          // 产生非负随机数
                g.Clear(Color.White);                                // 清空图像背景色
                 for  ( int  i  =   0 ; i  <   3 ; i ++ )                          // 绘制图像的背景噪声线
                {
                    
int  x1  =  random.Next(image.Width);
                    
int  x2  =  random.Next(image.Width);
                    
int  y1  =  random.Next(image.Height);
                    
int  y2  =  random.Next(image.Height);
                    g.DrawLine(
new  Pen(Color.Black), x1, y1, x2, y2);
                }
                Font font
= new  System.Drawing.Font( " Arial " , 40 ,(System.Drawing.FontStyle.Bold));
                g.DrawString(checkCode,font,
new  SolidBrush(Color.Red), 2 , 2 );
                                                                   
// 绘制图像的前景噪声点

                
for ( int  i = 0 ;i < 1000 ;i ++ )
                {
                    
int  x = random.Next(image.Width);
                    
int  y = random.Next(image.Height);
                    image.SetPixel(x,y,Color.FromArgb(random.Next()));
                }
                                                                   
// 绘制图像的边框线

                
// g.DrawRectangle(new Pen(Color.Silver),0,0,image.Width-1,image.Height-1);
                 this .pictureBox1.Width = image.Width;
                
this .pictureBox1.Height = image.Height;
                
this .pictureBox1.BackgroundImage = image;
            }
            
catch
            {
            }
        }


        
private   void  Form2_Load( object  sender, EventArgs e)
        {
            CodeImage(CheckCode());                               
// 调用函数CodeImage
        }

        
private   void  button1_Click( object  sender, EventArgs e)
        {
            CodeImage(CheckCode());
        }

        
private   void  button2_Click( object  sender, EventArgs e)
        {
            Application.Exit();
        }

窗体界面设计02_第5张图片

 06.椭圆及椭圆弧的绘制

 Graphics对象的DrawEllipse()方法的应用,语法结构:

 public void DrawEllipse(System.Drawing.Pen pen,float x,float y,float width,float height)

 Graphics对象的DrawArc()方法的应用,语法结构:

 public void DrawArc(System.Drawing.Pen pen,float x,float y,float widht,float height,float startAngle,float sweepAngle)

 startAngle:从x轴到弧线的点沿顺时针方向度量的角(以度为单位)

 sweepAngle:从startAngle参数到弧线的结束点沿顺时针方向度量的角(以度为单位)

 Graphics对象的FillPie()方法的应用,语法结构:

 public void FillPie(System.Drawing.Brush brush,float x,float y,float width,float height,float startAngle,float sweepAngle)

 

 

代码
         private   void  button1_Click( object  sender, EventArgs e)
        {

            Bitmap bitM 
=   new  Bitmap( this .pictureBox1.Width,  this .pictureBox1.Height);
            Graphics g 
=  Graphics.FromImage(bitM);
            g.Clear(Color.White);
            g.DrawEllipse(
new  Pen(Color.Blue),  10 10 100 50 );              // 绘制椭圆
             this .pictureBox1.BackgroundImage  =  bitM;
        }

        
private   void  button2_Click( object  sender, EventArgs e)
        {
            Bitmap bitM 
=   new  Bitmap( this .pictureBox2.Width,  this .pictureBox2.Height);
            Graphics g 
=  Graphics.FromImage(bitM);
            g.Clear(Color.White);
            g.DrawEllipse(
new  Pen(Color.Blue),  30 10 70 50 );               // 绘制圆
             this .pictureBox2.BackgroundImage  =  bitM;
        }

        
private   void  button3_Click( object  sender, EventArgs e)
        {
            Bitmap bitM 
=   new  Bitmap( this .pictureBox3.Width,  this .pictureBox3.Height);
            Graphics g 
=  Graphics.FromImage(bitM);
            g.Clear(Color.White);
            g.DrawArc(
new  Pen(Color.Blue),  10 10 90 50 30 180 );         // 绘制椭圆弧
             this .pictureBox3.BackgroundImage  =  bitM;
        }

        
private   void  button4_Click( object  sender, EventArgs e)
        {
            Bitmap bitM 
=   new  Bitmap( this .pictureBox4.Width,  this .pictureBox4.Height);
            Graphics g 
=  Graphics.FromImage(bitM);
            g.Clear(Color.White);
            g.FillPie(
new  SolidBrush(Color.Red),  10 10 100 50 90 270 );  // 绘制填充椭圆弧
            g.FillPie( new  SolidBrush(Color.Yellow),  10 10 100 50 90   +   270 90 );
            
this .pictureBox4.BackgroundImage  =  bitM;
        }

        
private   void  button5_Click( object  sender, EventArgs e)
        {
            
this .Close();
            Application.Exit();
        }

窗体界面设计02_第6张图片

 07.移动鼠标复制坐标区域图像

 PointToScreen()方法的应用,语法结构:

 public System.Drawing.Point PointToScreen(System.Drawing.Point p)

 Size对象的应用

 Graphics对象的CopyFromScreen()方法的应用,语法结构:

 public void CopyFromScreen(int courceX,int sourceY, int destinationX,int destinationY,System.Drawing.Size blockRegionSize)

 参数意义:

 sourceX:位于源矩形左上角的点的x坐标

 sourceY:位于源矩形左上角的点的y坐标

 destinationX:位于目标矩形左上角的点的x坐标

 destinationY:位于目标矩形左上角的点的y坐标

 blockRegionSize:要传输的区域大小

代码
         private   void  Form4_MouseMove( object  sender, MouseEventArgs e)
        {
            Point myp 
=   this .PointToScreen(e.Location);
            Graphics myg 
=   this .CreateGraphics();
            Size mys 
=   new  Size( 100 100 );
            myg.CopyFromScreen(myp.X 
-   50 , myp.Y  -   50 0 0 , mys);
            myg.Dispose();
        }

窗体界面设计02_第7张图片

 08.动态获取当前程序的图标

 Icon对象的应用

 Graphics对象的DrawImage()方法的应用,语法结构:

 public void DrawImage(System.Drawing.Image image,float x,float y)

 Graphics对象的DrawString()方法的应用,语法结构:

 public void DrawString(string s,System.Drawing.Font font,System.Drawing.Brush brush,float x,float y)

代码
         private   void  button1_Click( object  sender, EventArgs e)
        {
            Icon icon1 
=   new  Icon( this .Icon,  60 60 );                    // 定义Icom对象实例
            Graphics myg  =   this .CreateGraphics();                        // 创建Graphics对象实例
            Bitmap bmp  =  icon1.ToBitmap();                               // 创建Bitmap对象实例
            myg.DrawImage(bmp,  new  Point( 100 20 ));                      // 绘制图标
            myg.DrawString( " 当前程序的图标高度: "   +  icon1.Height.ToString(), Font, Brushes.Red,  50 70 );
            myg.DrawString(
" 当前程序的图标宽度: "   +  icon1.Width.ToString(), Font, Brushes.Red,  50 90 );
        }

        
private   void  button2_Click( object  sender, EventArgs e)
        {
            
this .Close();
            Application.Exit();
        }
 

窗体界面设计02_第8张图片

 09.动态获取系统图标

 SystemIcons对象的应用

 Graphics对象的DrawIcon()方法的应用,语法结构:

 public void DrawIcon(System.Drawing.Icon icon,int x,int y)

代码
         private   void  Form6_Paint( object  sender, PaintEventArgs e)
        {
            Rectangle[] rects 
=   new  Rectangle[ 9 ];                      // 定义Rectangle数组
            Pen p  =   new  Pen(Color.Red,  2 );                             // 定义画笔
             int  index  =   0 ;
            
for  ( int  i  =   20 ; i  <   200 ; i  =  i  +   60 )                      // 双For循环语句
            {
                
for  ( int  j  =   20 ; j  <   200 ; j  =  j  +   60 )
                {
                    e.Graphics.DrawRectangle(p, j, i, 
60 60 );         // 绘制矩形
                     if  (index  <   3 )
                    {
                        rects[index
++ =   new  Rectangle(j, i,  32 32 );
                    }
                    
else
                    {
                        rects[index
++ =   new  Rectangle(j, i,  60 60 );
                    }
                }
            }
                                                                     
// 定义图标数组,并获取系统图标
            Icon[] icons  = {
                             SystemIcons.Application,SystemIcons.Asterisk,SystemIcons.Error,
                             SystemIcons.Exclamation,SystemIcons.Hand,SystemIcons.Information,
                             SystemIcons.Shield,SystemIcons.Warning,SystemIcons.WinLogo
                         };
            
for  ( int  i  =   0 ; i  <  icons.Length; i ++ )                   // 利用循环绘制图标
            {
                e.Graphics.DrawIcon(icons[i], rects[i]);
            }

        }

窗体界面设计02_第9张图片

 10.动态打开、显示和缩放图像

 OpenFileDialog控件的使用,属性意义:

 Name:用来设置在程序代码中引用控件时使用的名称。

 FileName:用来设置打开对话框的默认文件名。

 InitialDirectory:用来设置对话框的默认初始目录,如果不指定,则显示为当前目录。

 DefaultExt:用来设置对话框默认的文件扩展名。

 Filter:用来设置对话框的文件类型,注意该属性的写法,如(文本类型*.txt)|*.txt。

 Title:用来设置对话框的标题。

 Multiselect:如果该属性为True,则打开对话框允许同时打开多个文件,如果为False,则一次只能打开一个文件。

代码
         private   void  button1_Click( object  sender, EventArgs e)
        {
            
string  myname;
            openFileDialog1.Filter 
=   " *.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf " ;
                                                                                 
// 设置打开图像的类型
            openFileDialog1.ShowDialog();                                         // "打开"对话框
            myname  =  openFileDialog1.FileName;
            pictureBox1.Image 
=  Image.FromFile(myname);                           // 显示打开图像
        }

        
private   void  button2_Click( object  sender, EventArgs e)
        {
            
if  (pictureBox1.Width  >=   50 )                                         // 当图像的宽度值小于50时,就不能再缩小了
            {
                pictureBox1.Width 
=  Convert.ToInt32(pictureBox1.Width  *   0.8 );
                pictureBox1.Height 
=  Convert.ToInt32(pictureBox1.Height  *   0.8 );
            }
            
else
            {
                MessageBox.Show(
this " 图像已是最小,不能再缩小了! " ,            // 提示对话框
                     " 提示对话框 " , MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

        }

        
private   void  button3_Click( object  sender, EventArgs e)
        {
            
if  (pictureBox1.Width  <   310 )                                         // 当图像的宽度值大于310时,就不能再放大了
            {
                pictureBox1.Width 
=  Convert.ToInt32(pictureBox1.Width  *   1.2 );
                pictureBox1.Height 
=  Convert.ToInt32(pictureBox1.Height  *   1.2 );
            }
            
else
            {
                MessageBox.Show(
this " 图像已是最大,不能再放大了! " ,            // 提示对话框
                     " 提示对话框 " , MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

 

窗体界面设计02_第10张图片

 

你可能感兴趣的:(界面设计)