2011-08-09 2 views
2

J'ai un System.Windows.Forms.Cursor avec moi et je voulais l'affecter à la propriété image.Cursor d'un WPF qui se trouve être de type System.Windows.Input.Cursor. La contrainte ici est, l'ancien type Curseur est renvoyé par notre Framework et je ne peux en aucun cas le modifier. Y a-t-il un moyen de jeter le premier au second?Problème de moulage de curseur WPF

+1

J'ai parcouru quelques sites à la recherche de la réponse avant de poster ici. Mais avec moins de chance ... [:(] – Anee

+0

Je doute que tu puisses le lancer Tu aurais probablement plus de chance à convertir son image –

+0

Tu ne peux pas le faire, mais tu pourrais être capable de diffuser les données du curseur Dans un fichier ou un flux de mémoire du Cursor.Handle sous-jacent, vous pouvez ensuite le passer dans le constructeur WPF Cursor (Stream) .L'économisation d'un curseur donné par son handle impliquera de descendre dans l'API Windows et même semble terriblement mal documenté, mais http://www.codeguru.com/forum/showthread.php?t=353956 a quelques suggestions – itowlson

Répondre

1

Cela a fait l'affaire pour moi:

SafeFileHandle panHandle = new SafeFileHandle(System.Windows.Forms.Cursors.PanNorth.Handle, false); 
this.Cursor = System.Windows.Interop.CursorInteropHelper.Create(panHandle); 

Documentation pour SafeFileHandle met en garde contre l'utilisation de faux pour la deuxième arg mais je m'y suis SEHExceptions peu importe si je vrai (même si je Cursors.PanNorth.CopyHandle())

+0

Excellent, +1. Devrait noter pour quiconque voyant ceci - 'System.Windows.Forms.Cursors.PanNorth' était difficile -codé dedans - vous pouvez envoyer n'importe quel 'System.Windows.Forms.Cursor' et obtenir son' .Handle' et cela fonctionnera - même un personnalisé défini avec 'Bitmap bmp = Bitmap.FromFile (filePath); IntPtr ptr = bmp.GetHicon(); System.Windows.Forms.Cursor c = new System.Windows.Forms.Cursor (ptr); '. Alors vous juste p ut dans 'c.Handle' au lieu de' System.Windows.Forms.Cursors.PanNorth.Handle'. – vapcguy