Csharp/C Sharp/GUI Windows Form/Cursor

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

All Mouse Cursors

<source lang="csharp">

using System; using System.Drawing; using System.Windows.Forms;

class MouseCursors: Form {

    Cursor[] acursor = 
    { 
         Cursors.AppStarting, Cursors.Arrow,       Cursors.Cross,       
         Cursors.Default,     Cursors.Hand,        Cursors.Help,     
         Cursors.HSplit,      Cursors.IBeam,       Cursors.No,          
         Cursors.NoMove2D,    Cursors.NoMoveHoriz, Cursors.NoMoveVert,
         Cursors.PanEast,     Cursors.PanNE,       Cursors.PanNorth,    
         Cursors.PanNW,       Cursors.PanSE,       Cursors.PanSouth,
         Cursors.PanSW,       Cursors.PanWest,     Cursors.SizeAll,     
         Cursors.SizeNESW,    Cursors.SizeNS,      Cursors.SizeNWSE,
         Cursors.SizeWE,      Cursors.UpArrow,     Cursors.VSplit,      
         Cursors.WaitCursor
    };
    string[] astrCursor = 
    { 
         "AppStarting",       "Arrow",             "Cross",       
         "Default",           "Hand",              "Help",     
         "HSplit",            "IBeam",             "No",          
         "NoMove2D",          "NoMoveHoriz",       "NoMoveVert",
         "PanEast",           "PanNE",             "PanNorth",    
         "PanNW",             "PanSE",             "PanSouth",
         "PanSW",             "PanWest",           "SizeAll",     
         "SizeNESW",          "SizeNS",            "SizeNWSE",
         "SizeWE",            "UpArrow",           "VSplit",      
         "WaitCursor" 
    };
  
    public static void Main()
    {
         Application.Run(new MouseCursors());
    }
    public MouseCursors()
    {
         Text = "Mouse Cursors";
         ResizeRedraw = true;
    }
    protected override void OnMouseMove(MouseEventArgs mea)
    {
         int x = Math.Max(0, Math.Min(3, mea.X / (ClientSize.Width  / 4)));
         int y = Math.Max(0, Math.Min(6, mea.Y / (ClientSize.Height / 7)));
  
         Cursor.Current = acursor[4 * y + x];
    }
    protected override void OnPaint(PaintEventArgs pea)
    {
         Graphics     grfx   = pea.Graphics;
         Brush        brush  = new SolidBrush(ForeColor);
         Pen          pen    = new Pen(ForeColor);
         StringFormat strfmt = new StringFormat();
  
         strfmt.LineAlignment = strfmt.Alignment = StringAlignment.Center;
  
         for (int y = 0; y < 7; y++){
             for (int x = 0; x < 4; x++)
             {
                  Rectangle rect = Rectangle.FromLTRB(
                                            x      * ClientSize.Width  / 4,
                                            y      * ClientSize.Height / 7,
                                           (x + 1) * ClientSize.Width  / 4,
                                           (y + 1) * ClientSize.Height / 7);
      
                  grfx.DrawRectangle(pen, rect);
                  grfx.DrawString(astrCursor[4 * y + x], 
                                  Font, brush, rect, strfmt);
             }
         }    
    }

}

</source>


Hand Cursor

<source lang="csharp"> using System.Drawing; using System.Windows.Forms;

class FormProperties {

    public static void Main()
    {
         Form form = new Form();
  
         form.Text            = "Form Properties";
         form.Cursor          = Cursors.Hand;
  
         Application.Run(form);
    }

}

</source>


Load animated cursor

<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO; public class Form1 : Form {

 public Form1() {
       InitializeComponent();
   try
   {
     this.Cursor = AdvancedCursors.Create(Path.rubine(Application.StartupPath, "blob.ani"));
   }
   catch (Exception err)
   {
     MessageBox.Show(err.Message);
   }
 }
 private void InitializeComponent()
 {
   this.SuspendLayout();
   this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
   this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
   this.ClientSize = new System.Drawing.Size(292, 266);
   this.Text = "Form1";
   this.ResumeLayout(false);
 }
 [STAThread]
 static void Main()
 {
   Application.EnableVisualStyles();
   Application.Run(new Form1());
 }

} public class AdvancedCursors {

 [DllImport("User32.dll")]
 private static extern IntPtr LoadCursorFromFile(String str);
 public static Cursor Create(string filename)
 {
   IntPtr hCursor = LoadCursorFromFile(filename);
   
   if (!IntPtr.Zero.Equals(hCursor))
   {
     return new Cursor(hCursor);
   }
   else
   {
     throw new ApplicationException("Could not create cursor from file " + filename);
   }
 }

}

      </source>


Load cursor file(*.cur)

<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;

public class Form1 : Form {

   public Form1() {
       this.SuspendLayout();
       this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.ClientSize = new System.Drawing.Size(292, 268);
       this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
       this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
       this.ResumeLayout(false);
   }
   private void Form1_MouseMove(object sender, MouseEventArgs e) {
       Point p = new Point(e.X, e.Y);
       Rectangle r;
       if (new Rectangle(0, 0, 100, 100).Contains(p))
           this.Cursor = new Cursor("MyCursor.cur");
       else if (new Rectangle(100, 0, 100, 100).Contains(p))
           this.Cursor = Cursors.Hand;
       else if (new Rectangle(0, 100, 100, 100).Contains(p))
           this.Cursor = Cursors.VSplit;
       else if (new Rectangle(100, 100, 100, 100).Contains(p))
           this.Cursor = Cursors.UpArrow;
       else
           this.Cursor = Cursors.Default;
   }
   private void Form1_Paint(object sender, PaintEventArgs e) {
       Graphics g = e.Graphics;
       g.FillRectangle(Brushes.Blue, 0, 0, 100, 100);
       g.FillRectangle(Brushes.Red, 100, 0, 100, 100);
       g.FillRectangle(Brushes.Yellow, 0, 100, 100, 100);
       g.FillRectangle(Brushes.Green, 100, 100, 100, 100);
   }
   static void Main() {
       Application.EnableVisualStyles();
       Application.Run(new Form1());
   }

}

</source>


Set form window cursor

<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO; public class Form1 : Form {

 public Form1() {
       InitializeComponent();
   try
   {
     this.Cursor = AdvancedCursors.Create(Path.rubine(Application.StartupPath, "blob.ani"));
   }
   catch (Exception err)
   {
     MessageBox.Show(err.Message);
   }
 }
 private void InitializeComponent()
 {
   this.SuspendLayout();
   this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
   this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
   this.ClientSize = new System.Drawing.Size(292, 266);
   this.Text = "Form1";
   this.ResumeLayout(false);
 }
 [STAThread]
 static void Main()
 {
   Application.EnableVisualStyles();
   Application.Run(new Form1());
 }

} public class AdvancedCursors {

 [DllImport("User32.dll")]
 private static extern IntPtr LoadCursorFromFile(String str);
 public static Cursor Create(string filename)
 {
   IntPtr hCursor = LoadCursorFromFile(filename);
   
   if (!IntPtr.Zero.Equals(hCursor))
   {
     return new Cursor(hCursor);
   }
   else
   {
     throw new ApplicationException("Could not create cursor from file " + filename);
   }
 }

}

      </source>


Set Form window cursor to wait cursor

<source lang="csharp">

 using System;
 using System.Drawing;
 using System.Collections;
 using System.ruponentModel;
 using System.Windows.Forms;
 using System.Data;
 public class MainForm : System.Windows.Forms.Form
 {
   private System.ruponentModel.Container components;
   public MainForm()
   {
     InitializeComponent();
     BackColor = Color.Tomato;
     Opacity = 0.5d;
     Text = "www.nfex.ru";
     Cursor = Cursors.WaitCursor;
     this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
   }
   protected override void Dispose( bool disposing )
   {
     if( disposing )
     {
       if (components != null) 
       {
         components.Dispose();
       }
     }
     base.Dispose( disposing );
   }
   private void InitializeComponent()
   {
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 273);
     this.Text = "Form1";
   }
   [STAThread]
   static void Main() 
   {
     Application.Run(new MainForm());
   }
   private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
   {
     Graphics g = e.Graphics;
     g.DrawString("www.nfex.ru", 
       new Font("Times New Roman", 20), 
       new SolidBrush(Color.Black), 40, 10);
   }
 }


      </source>