C# SharpDX-系统.绘图互操作性

C# SharpDX-系统.绘图互操作性,c#,.net,directx-11,sharpdx,C#,.net,Directx 11,Sharpdx,是否可以将使用默认.net绘制方法(System.Drawing方法)绘制的内容绘制到SharpDX Texture2D对象,以便将其显示为纹理? 最好使用SharpDX工具包 如果是,如何进行 编辑:我目前正在尝试的内容: Bitmap b = new Bitmap(100,100); MemoryStream ms = new MemoryStream(); b.Save(ms, System.Drawing.Imaging.ImageFormat.Png); Texture2D t

是否可以将使用默认.net绘制方法(System.Drawing方法)绘制的内容绘制到SharpDX Texture2D对象,以便将其显示为纹理? 最好使用SharpDX工具包

如果是,如何进行

编辑:我目前正在尝试的内容:

Bitmap b = new Bitmap(100,100);
MemoryStream ms = new MemoryStream();
b.Save(ms, System.Drawing.Imaging.ImageFormat.Png);    
Texture2D tex = Texture2D.Load(g.device, ms); // crashing here
ms.Close();
Save()调用将内存流保留在流的末尾。这将混淆Load()方法,因为它无法从流中读取任何数据。您必须显式地倒带流。在两行代码之间插入此语句:

  ms.Position = 0;

只需使用FromStream()方法。这样可以从保存到MemoryStream的位图创建纹理。好主意,所以我尝试将其写入MemoryStream,如下所示:
Bitmap.Save(ms,System.Drawing.Imaging.ImageFormat.Png)
,但sharpdx认为是DDS,加载时失败。您忘记了ms.Position=0;在Load()调用之前。谢谢!如果你把它作为一个答案,我可以接受。作为将来的参考,“撞车在这里”不是一个好的问题描述。当您收到异常时,请始终发布完整的异常详细信息。
  ms.Position = 0;