Конвертировать перо в IntPtr - PullRequest
0 голосов
/ 20 марта 2010

Есть ли простой способ преобразовать System.Drawing.Pen в его неуправляемую копию?Например, если у вас была ручка, подобная этой:

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

Я знаю, что этот код не работает, но есть ли способ сделать это аналогичным образом?

1 Ответ

1 голос
/ 20 марта 2010

Класс 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-Framework, поскольку внутренние свойства могут измениться ...

...