Two constructors in the WPF Cursor class:
public Cursor(Stream cursorStream) public Cursor(string cursorFile)
The resources used by the above constructors are all ani or cur files, and do not support image generation.
/// This class allow you create a Cursor form a Bitmap /// </summary> internal class BitmapCursor : SafeHandle { public override bool IsInvalid { get { return handle == (IntPtr)(-1); } } public static Cursor CreateBmpCursor(Bitmap cursorBitmap) { var c = new BitmapCursor(cursorBitmap); return CursorInteropHelper.Create(c); } protected BitmapCursor(Bitmap cursorBitmap) : base((IntPtr)(-1), true) { handle = cursorBitmap.GetHicon(); } protected override bool ReleaseHandle() { bool result = DestroyIcon(handle); handle = (IntPtr)(-1); return result; } [DllImport("user32")] private static extern bool DestroyIcon(IntPtr hIcon); }
Extension methods provided:
public static Bitmap BitmapSourceToBitmap(this BitmapSource source) { using (var stream = new MemoryStream()) { var e = new BmpBitmapEncoder(); e.Frames.Add(BitmapFrame.Create(source)); e.Save(stream); var bmp = new Bitmap(stream); return bmp; } }
Reprinted from: http://www.cnblogs.com/zhouyinhui/archive/2010/05/28/1746502.html