2011-08-09 6 views
2

저는 System.Windows.Forms.Cursor를 가지고 있고 WPF의 image.Cursor 속성에 할당하려고합니다.이 속성은 System.Windows.Input.Cursor 유형이됩니다. 여기 제약 조건은 우리의 Framework에 의해 이전의 Cursor 유형이 반환되므로 결코 수정할 수 없습니다. 전자를 후자에게 주조 할 방법이 있습니까? SafeFileHandle에 대한WPF 커서 캐스팅 문제

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

문서는 두 번째 인수에 대한 잘못된 사용에 대해 경고하지만 난 상관없이 나는 (내가 Cursors.PanNorth.CopyHandle를 사용하는 경우에도 마찬가지 사용하는 경우 어떻게 SEHExceptions 없어 :

+1

나는 여기에 게시하기 전에 대답을 찾기 위해 사이트를 거의 탐색하지 않았다. 하지만 운이 적다 ... [:(] – Anee

+0

캐스팅 할 수 있을지 의심 스럽습니다. 이미지를 변환하는 데 더 많은 행운이있을 것입니다. –

+0

캐스팅 할 수는 없지만 커서 데이터를 스트리밍 할 수는 있습니다. 기본 Cursor.Handle의 파일 또는 메모리 스트림에 전달하면 WPF Cursor (Stream) 생성자로 전달할 수 있습니다. 핸들을 사용하여 커서를 저장하면 Windows API로 떨어지게되며 심하게 문서화 된 것처럼 보이지만 http://www.codeguru.com/forum/showthread.php?t=353956에 몇 가지 제안 사항이 있습니다. – itowlson

답변

1

이 나를 위해 속임수를 썼는지())

+0

우수, +1. 'System.Windows.Forms.Cursors.PanNorth'는 열심히했습니다. -coded in -'System.Windows.Forms.Cursor'를 보내면'.Handle'을 얻을 수 있습니다.'Bitmap bmp = Bitmap.FromFile (filePath);로 정의 된 커스텀 패키지 일 수도 있습니다; IntPtr ptr = bmp.GetHicon(); System.Windows.Forms.Cursor c = new System.Windows.Forms.Cursor (ptr);'그럼 당신은 단지 p 'System.Windows.Forms.Cursors.PanNorth.Handle' 대신에'c.Handle'을 사용하십시오. – vapcguy