«Windows® API Code Pack для Microsoft® .NET Framework» имеет управляемые библиотеки, которые обеспечивают доступ к Direct2D и DirectWrite.
http://code.msdn.microsoft.com/WindowsAPICodePack
Обновление
Хотя оболочки DirectX написаны на управляемом C ++, они создают управляемые библиотеки. Судя по всему, они могут быть использованы в C #. Есть много примеров, включенных в загрузку, которые делают именно это, то есть используют управляемые библиотеки оболочки C ++ Direct из C #.
Было бы очень полезно использовать функции Windows 7 в моем собственном приложении C #, поэтому я в настоящее время устанавливаю Windows7 SDK (так что я могу создать управляемое решение C ++ DirectX) и предоставлю возможность всего этого.
Я следую инструкциям по адресу:
http://blogs.msdn.com/msaleh/archive/2009/08/25/introducing-directx-features-of-windows-api-code-pack.aspx
Обновление 2
Следуя инструкциям в приведенной выше ссылке, я собрал управляемые библиотеки C ++, и вы действительно можете очень легко использовать их из C #.
Теперь я не уверен, правильно ли я понимаю, но вы просто рассматриваете какой-то способ использования Direct2D и DirectWrite из C # или это должен быть COM или P \ Invoke.
Я бы очень сомневался, что будет оболочка COM, так как это несовпадающая технология. COM не очень хорошо спроектирован для шаблонов высокочастотных вызовов методов, которые вы получаете в графическом программировании - он слишком медленный.
Если вы действительно хотите сделать P \ Invoke, вы всегда можете посмотреть заголовочные файлы DirectX (в Windows 7 SDK) и использовать инструмент для создания всех ваших заглушек вызовов P \ Invoke, например,
http://www.pinvoker.com/
Вероятно, это будет основной PITA, хотя и разрабатывать обертку таким образом.