Csharp/C Sharp/GUI Windows Form/Cursor

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

All Mouse Cursors

 

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);
              }
          }    
     }
}


Hand Cursor

 
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);
     }
}


Load animated cursor

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);
    }
  }
}


Load cursor file(*.cur)

 
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());
    }
}


Set form window cursor

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);
    }
  }
}


Set Form window cursor to wait cursor

  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);
    }
  }