Sharpdxプロジェクトの[Issue]タブに直接質問してください。私はそこからすぐに回答を得ることができます(私は時々ネットからの使用状況をチェックしていることが幸運です) )。これを正式に求めていた場合は、図書館を改善し、問題の記録を問題データベースに保存することができました。
あなたの特定の問題に関しては、使用しているDirectX APIの種類が明確ではありません。私はあなたがDirect2Dを使用していると仮定しますか?
「はい」の場合、ファイルからSharpDX.Direct2D1.Bitmapを直接ロードするAPIはありません(このメソッドをAPIに追加します)。私はちょうどこれを実行しているbitmap sampleをアップロードしました。
/// <summary>
/// Loads a Direct2D Bitmap from a file using System.Drawing.Image.FromFile(...)
/// </summary>
/// <param name="renderTarget">The render target.</param>
/// <param name="file">The file.</param>
/// <returns>A D2D1 Bitmap</returns>
public static Bitmap LoadFromFile(RenderTarget renderTarget, string file)
{
// Loads from file using System.Drawing.Image
using (var bitmap = (System.Drawing.Bitmap)System.Drawing.Image.FromFile(file))
{
var sourceArea = new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height);
var bitmapProperties = new BitmapProperties(new PixelFormat(Format.R8G8B8A8_UNorm, AlphaMode.Premultiplied));
var size = new System.Drawing.Size(bitmap.Width, bitmap.Height);
// Transform pixels from BGRA to RGBA
int stride = bitmap.Width * sizeof(int);
using (var tempStream = new DataStream(bitmap.Height * stride, true, true))
{
// Lock System.Drawing.Bitmap
var bitmapData = bitmap.LockBits(sourceArea, ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
// Convert all pixels
for (int y = 0; y < bitmap.Height; y++)
{
int offset = bitmapData.Stride*y;
for (int x = 0; x < bitmap.Width; x++)
{
// Not optimized
byte B = Marshal.ReadByte(bitmapData.Scan0, offset++);
byte G = Marshal.ReadByte(bitmapData.Scan0, offset++);
byte R = Marshal.ReadByte(bitmapData.Scan0, offset++);
byte A = Marshal.ReadByte(bitmapData.Scan0, offset++);
int rgba = R | (G << 8) | (B << 16) | (A << 24);
tempStream.Write(rgba);
}
}
bitmap.UnlockBits(bitmapData);
tempStream.Position = 0;
return new Bitmap(renderTarget, size, tempStream, stride, bitmapProperties);
}
}
}
あなたが言ったように、あなたは間違いなくために、どのようにプログラム生のDirectXを理解する必要があるので、SharpDXは、(より高いレベルのAPIを与えている例XNA用とは異なり)、生の低レベルのDirectX APIへのアクセスを与えていますSharpDXを使用する。