Csharp/C Sharp/GUI Windows Form/Cursor
Версия от 15:31, 26 мая 2010; (обсуждение)
Содержание
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);
}
}