Проблемы рисования реального курсора - PullRequest
1 голос
/ 25 июля 2011


Я разрабатываю скриш-приложение.Я хотел бы поймать реальный курсор, чтобы нарисовать его на растровом изображении.
У меня есть две реализации: в первом курсор отображается хорошо, но он всегда является курсором по умолчанию;в то время как в последнем случае курсор иногда рисуется хорошо, а иногда он не обновляется и не рисуется хорошо.
Есть ли способ объединить положительные аспекты этой реализации?

Первый:

Point cursorPosition = Cursor.Position;
if (_bitmapRectangle.Contains(cursorPosition))
{
    Point relativeCursorPosition = new Point(cursorPosition.X - _bitmapRectangle.Location.X, cursorPosition.Y - _bitmapRectangle.Location.Y);
    Cursor.Draw(graphics, new Rectangle(relativeCursorPosition, Cursor.Size));
}

Second:

Point cursorPosition = Cursor.Position;
using (Cursor cursor = Cursor.Current)
{ 
   if (_bitmapRectangle.Contains(cursorPosition))
   {
       Point relativeCursorPosition = new Point(cursorPosition.X - _bitmapRectangle.Location.X, cursorPosition.Y - _bitmapRectangle.Location.Y);
       cursor.Draw(graphics, new Rectangle(relativeCursorPosition, cursor.Size));
    }
}

Кажется, что второе решение работает плохо, когда я не использую курсор по умолчанию и когда мышь находится в фоновой форме (и форма скриншота включенапередний план).

1 Ответ

0 голосов
/ 25 июля 2011

1001 * попробовать *

Point cursorPosition = Cursor.Position;
if (_bitmapRectangle.Contains(cursorPosition))
{
    Point relativeCursorPosition = new Point(cursorPosition.X - _bitmapRectangle.Location.X, cursorPosition.Y - _bitmapRectangle.Location.Y);
    new Cursor (Cursor.Current.Handle).Draw(graphics, new Rectangle(relativeCursorPosition, Cursor.Size));
}
...