|
.NET Framework Classes: Cursor |
|
|
A cursor is a small picture that
represents the position of the mouse on a Windows screen. Because Microsoft
Windows is a graphic-oriented operating system, when it installs, it creates
a set of standard or regularly used cursors. These can be seen by opening
the Control Panel window and double-clicking the Mouse icon. This opens the
Mouse Properties dialog box where you can click the Pointers tab to see a
list of standard cursors installed by Windows:
|
Microsoft Visual Studio 2010 provides a rich collection
of cursors you can easily use in your application. You can apply them to any
control as you wish.
To support cursors, the .NET Framework provides two
classes. One of the classes used for cursors is called Cursors. This
sealed class mostly contains a list of available cursors as properties.
Another technique consists of using a cursor not listed in the Properties
window. A cursor is based on the Cursor class. Both the Cursors
and the Cursor classes are defined in the System.Windows.Forms
namespace that is part of the System.Windows.Forms.dll library.
Application:
Introducing Cursors
|
|
- From the Common Controls section of the Toolbox, click the ListBox
control
and click the upper-left section of the form
- From the Containers section of the Toolbox, click the Panel control
and click the upper-right section of the form
- Once again, from the Common Controls section of the Toolbox, click
the TreeView control
and click the lower-left section of the form
- From the Common Controls section of the Toolbox, click the
RichTextBox control
and click the lower-right section of the form
A cursor is primarily represented in Microsoft Windows
as a (resource) file. This means that, to get a cursor, you can design one.
Fortunately, Microsoft Windows and the .NET Framework provides many cursors
ready to be used. Otherwise, you can create and design your own.
To create a cursor, you can use use Microsoft Visual
Studio. To start, on the main menu, you can click Project -> Add New Item...
In the middle list, you can click Cursor File, give it a name, and click
Add.
A cursor is a Windows file that has the extension .cur.
Application:
Creating a Cursor
|
|
- On the main menu, you can click Project -> Add New Item...
- In the middle list, click Cursor File
- Change the Filename to push
- Click Add
- On the Image Editor toolbar, click the Line tool
.
In the Colors window, make sure the black color is selected
- Draw a vertical line from the pixel on the 6th column and 2nd row
from top
- Draw a diagonal line at 45˚ from the top border of the new line to
the lower-right until the line is at 5 pixels from the right border of
the drawing area
- Draw a horizontal line from the lower border of the dialog line to
half-left
- Draw a diagonal line from the lower border of the vertical line to
the left border of the horizontal line:
- Draw another diagonal line from the top corner of the current shape
to the intersection of horizontal and left diagonal line:
- On the Image Editor toolbar, click Fill Tool
- In the Colors window, click the button with a pink monitor
- In the drawing area, click the right triangle
- In the Colors window, click the white color
- On the drawing area, click in the left triangle
Characteristics of a Cursor
|
|
There are two main ways you can use a cursor in your
application. The easiest cursors are listed in the Cursor field of
the Properties window for the control whose cursor you want to change. The
available cursors are:
You can select one of these cursors in the Properties
window and assign it to a control. These cursors are defined in a class
called Cursors. This simple class mostly contains only a list of
available cursors as properties. All these cursors are represented as
static properties. Therefore, to use one of these cursors, call the name
of the class, Cursors, followed by the class access operator ".",
followed by the name of the cursor as it appears in the above list.
The Cursor class provides four constructors. One
of them allows you to specify the path where the cursor is located. This
constructor has the following syntax:
public Cursor(String filename);
The argument passed to this constructor is the name or
the location of the cursor as a file. After calling this constructor to
initialize a Cursor variable, the cursor is ready. You can then use
it as you see fit. For example, you can assign it to the Cursor
property of a control.
When the cursor of a control has been changed, the
control fires a CursorChanged event. This event is of type
EventArgs.
Application:
Using Cursors
|
|
- Display the form
- Click the control on the upper-left section of the form
- In the Properties window, click the arrow of the combo box of the
Cursor field and select PanNorth
- Double-click an unoccupied area of the form to access its Load event
- To programmatically assign cursors, implement the event as follows:
private void Form1_Load(object sender, EventArgs e)
{
System.Drawing.Icon icoMain = new System.Drawing.Icon("diamond.ico");
Icon = icoMain;
System.Windows.Forms.Cursor curPush =
new System.Windows.Forms.Cursor("push.cur");
panel1.Cursor = Cursors.NoMove2D;
treeView1.Cursor = curPush;
richTextBox1.Cursor = Cursors.PanSE;
}
- Execute the application to test it
- Close the form and return to your programming environment
Besides showing the current position of the mouse,
depending on the application, at one time, the user may need to click.
Because a cursor is primarily confined to a rectangular shape, a cursor must
specify which one of its sections would lead the clicking. The area that
directs or holds the clicking on a cursor is referred to as its hot spot.
The person who designs a cursor must also specify its hot spot. This means
that the hot spots have already been specified for all the built-in cursors
of Microsoft Windows and the cursor that ship with the .NET Framework.
If you are visually creating a cursor, to specify its
hot spot, on the Image Editor toolbar, you can click the Set Hot Spot
.
Then, on the cursor, click the point that will act as the hot spot.
On an existing cursor, to know the coordinates of the
hot spot, access the value of its HotSpot property. The
Cursor.HotSpot property is of type Point.
Application:
Creating a Hot Spot for a Cursor
|
|
- Display the cursor you were designing
- To set the position of the cursor pointer, on the Image Editor
toolbar, click the Set Hot Spot Tool
- Click the tip of the cursor at the intersection of vertical and the
the diagonal lines in the top-left section
- On the form, click an unoccupied area of the form
- In the Properties window, click the Events button
and double-click the box right to MouseMove
- Implement the event as follows:
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
Text = "Hot Spot: F(" +
Cursor.HotSpot.X.ToString() +
", " + Cursor.HotSpot.Y + ")";
}
- Return to the form
- Click the control on the top-left area of the form
- In the Events section of the Properties window, double-click the box
right to MouseMove
- Implement the event as follows:
private void listBox1_MouseMove(object sender, MouseEventArgs e)
{
Text = "Hot Spot: L(" +
listBox1.Cursor.HotSpot.X.ToString() +
", " + listBox1.Cursor.HotSpot.Y + ")";
}
- Return to the form
- Click the control on the top-right area of the form
- In the Events section of the Properties window, double-click the box
right to MouseMove
- Implement the event as follows:
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
Text = "Hot Spot: P(" +
panel1.Cursor.HotSpot.X.ToString() +
", " + panel1.Cursor.HotSpot.Y + ")";
}
- Return to the form
- Click the control on the lower-left area of the form
- In the Events section of the Properties window, double-click the box
right to MouseMove
- Implement the event as follows:
private void treeView1_MouseMove(object sender, MouseEventArgs e)
{
Text = "Hot Spot: T(" +
treeView1.Cursor.HotSpot.X.ToString() +
", " + treeView1.Cursor.HotSpot.Y + ")";
}
- Return to the form
- Click the control on the lower-right area of the form
- In the Events section of the Properties window, double-click the box
right to MouseMove
- Implement the event as follows:
private void richTextBox1_MouseMove(object sender, MouseEventArgs e)
{
Text = "Hot Spot: R(" +
richTextBox1.Cursor.HotSpot.X.ToString() +
", " + richTextBox1.Cursor.HotSpot.Y + ")";
}
- Execute the application to see the results:
- Close the form and return to your programming environment
A cursor is a picture of size 32 x 32 pixels. To know
the size of an existing cursor, you can get the value of the Size
property of the Cursor object. The Cursor.Size property is of
type Size.
To specify the rectangle in which the cursor much be
confined, you can create a Rectangle object and assign it to the
Clip property of a cursor. To know the rectangle in which a cursor is
confined, get the value of its Clip property. The Cursor.Clip
property is of type Rectanble.
While the user is moving the mouse on a control, the
cursor moves also, which, by its purpose, is designed to show the current
position of the mouse. In some application, at one particular time, you may
want to know the coordinates of the mouse position. To provide you with this
information, the Cursor class is equipped with a property named Position.
The Position property is of type Point, which gives you to
left (X) and the top (Y) coordinates of the mouse. Here is an example that
displays the position of the mouse on the title bar of a form:
private void Exercise_MouseMove(object sender, MouseEventArgs e)
{
Text = Cursor.Position.X.ToString() +
", " +
Cursor.Position.Y.ToString();
}
Showing or Hiding a Cursor
|
|
If at any time you want to hide a cursor, you can call
the Cursor.Hide() method. Its syntax is:
public static void Hide();
To display the cursor again, you can call the
Cursor.Show() method. Its syntax is:
public static void Show();
|
|