Курсор

В ряде задач необходимо программно изменять в зависимости от ситуации изображение курсора. Сделать это достаточно просто. Необходимо изменять свойство Cursor для того объекта, над которым изображение курсора должно изменяться.

Пример. В рабочей области окна программы задействуем два вида курсора: один — при нажатии клавиши мыши («курсор-вспышка»), другой — при её отпускании («курсор-перекрестие»). Вне окна пусть будет виден обычный курсор (по-умолчанию — «стрелочка»).

Возможная реализация программы(вначале приводится текст файла MainForm.cs):

using System.Collections.Generic;

using System.Drawing;

using System.Windows.Forms;

namespace Prim_Cursor0

{

   public partial class MainForm : Form

   {

      Cursor c, c2;

      public MainForm()

      {

         InitializeComponent();

         c = new Cursor("cross_il.cur");

         c2= new Cursor("cross_id.cur");

         Cursor = c;

      }

      void MainFormMouseDown(object sender, MouseEventArgs e)

      {

         Cursor = c2;

      }

      void MainFormMouseUp(object sender, MouseEventArgs e)

      {

         Cursor = c;

      }

   }

}

Текст, созданный дизайнером системы SharpDevelop (для экономии места убраны все комментарии. Этот текст приводится для тех, кто не пользуется дизайнером):

namespace Prim_Cursor0

{

   partial class MainForm

   {

      private System.ComponentModel.IContainer components = null;

      protected override void Dispose(bool disposing)

      {

         if (disposing) {

            if (components != null) {

               components.Dispose();

            }

         }

         base.Dispose(disposing);

      }


      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(284, 264);

         this.Name = "MainForm";

         this.Text = "Prim_Cursor0";


         this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.MainFormMouseUp);

         this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MainFormMouseDown);

         this.ResumeLayout(false);

      }

   }

}

Пояснения к программе. В классе MainForm создаём два поля c и c2 типа Cursor. В конструкторе MainForm задаём им начальные значения:

c = new Cursor("cross_il.cur");

c2= new Cursor("cross_id.cur");

Имена файлов с расширением *.cur должны находится в одной папке с исполняемым модулем.

Заменяем для рабочей части формы (основного окна программы) текущий курсор на один из новых:

Cursor = c;

Теперь основным курсором здесь станет «курсор-перекрестие».

Обработчик MainFormMouseDown() (нажатие клавиши мыши) заменяет «курсор-перекрестие» на курсор другого вида: «курсор-вспышка».

При отпускании клавиши мыши срабатывает обработчик MainFormMouseUp() и курсор снова заменяется на «курсор-перекрестие».

Возникает вопрос: как создавать графические изображения курсоров, т.е. файлы с расширением *.cur ? В ряде случаев подойдут стандартные курсоры («курсор-перекрестие» хранится в файле cross_il.cur, который лежит в папке Windows/Cursors. Если стандартных курсоров недостаточно, то можно поискать что-нибудь подходящее в Интернете или воспользоваться какой-либо сторонней программой для создания курсоров (обычная «рисовалка» типа Paint здесь не подойдёт!). Например, «Курсор-вспышка» нарисован мной в редакторе курсоров RealWorld Cursor Editor (программа бесплатна для личного использования). Эта программа позволяет создавать как обычные курсоры, так и анимированные (имеют расширение *.ani). К сожалению, в C# простыми средствами (как описано выше) анимированные курсоры задействовать не удастся.



Назад
На верх
Вперёд
Hosted by uCoz