Поскольку у вас есть курсор в качестве ресурса проекта, вы можете сделать это:
[DllImport("User32.dll", CharSet = CharSet.Ansi, BestFitMapping = false, ThrowOnUnmappableChar = true)]
private static extern IntPtr LoadCursorFromFile(String str);
public static Cursor LoadCursorFromResource(Icon icono) // Assuming that the resource is an Icon, but also could be a Image or a Bitmap
{
// Saving cursor icon in temp file, necessary for loading through Win API
string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".cur";
using (var fileStream = File.Open(fileName, FileMode.Create))
{
icono.Save(fileStream);
}
// Loading cursor from temp file, using Win API
Cursor result = new Cursor(LoadCursorFromFile(fileName));
// Deleting temp file
File.Delete(fileName);
return result;
}
Затем для получения курсора вы просто делаете:
Cursor myCursor = LoadCursorFromResource(WaterforMGC.Properties.Resources.waterspray);
Чтение курсора из файла через указатель с помощью Win API позволяет обрабатывать анимированные или цветные курсоры, несмотря на ограничения, перечисленные в MSDN для класса Cursor.
Мой ответ основан на этом другом ответе SO (и успешно протестирован на .NET 4.0).