2010-03-20 2 views
0

System.Drawing.Pen을 관리되지 않는 해당 파트로 변환하는 간단한 방법이 있습니까? 만약 당신이 이런 펜을 가지고 있다면 :펜을 IntPtr로 변환

Pen p = new Pen(Color.Blue, 1f); 
IntPtr ptr = p.ToPtr(); 

나는이 코드가 효과가 없다는 것을 알고 있지만, 비슷한 방법이 있습니까?

+0

당신은'HPEN' GDI 핸들에 관심이 있습니까? –

답변

1

Pen 클래스에는 원하는 내용이 정확히 포함 된 내부 속성 NativePen이 있습니다. (코드는 적절한 권한이있는 경우) 다음을 사용하여 반사를 통해이 속성에 액세스 할 수 있습니다 : 내부 속성을 변경할 수 있기 때문에

Pen p = new Pen(Color.Blue, 1f); 
PropertyInfo pi = typeof(Pen).GetProperty("NativePen", BindingFlags.Instance | BindingFlags.NonPublic); 
IntPtr ip = (IntPtr)pi.GetValue(p, null); 

은, 이론적으로 이것은 .NET 프레임 워크의 향후 버전에서 작동하지 않을 수 있습니다주의하십시오 ..

+0

다른 .NET 구현 (특히 Mono)에서는 작동하지 않습니다. –

+0

글쎄, 나는 그것 없이는 내 문제를 해결했지만 이것은 아마도 내 문제에 대해 효과가 있었을 것이다. 그래서 나는 그것을 표시 할 것이다. 어쨌든 고마워! – Bevin

+0

@Konrad : 맞아. 그러나 펜을 IntPtr로 변환해도 모노로 이해할 수 있을지 확신 할 수 없습니다. 모든 변환이 끝나면 기본 그래픽 시스템에 액세스 할 수 있습니다. 모노 그래픽을 사용하는 경우 크게 다를 수 있습니다. – MartinStettner

관련 문제