使用Direct2D

时间:2017-01-15 19:37:46

标签: c# directx direct2d wic

我开始使用带有c#的Direct2D。

我已下载并使用this example app

该应用程序运行正常,但我还需要它从硬盘驱动器加载png图像并显示它们。

在示例中,这可以在函数OnRender中完成,可能使用RenderTarget.DrawBitmap

但是,我在实际将png加载到内存时遇到了问题。我知道我应该使用WICImagingFactory这样的内容,但我无法找到该类,而且我不确定如何使用它来获取所需的D2DBitmap对象RenderTarget.DrawBitmap

任何人都可以提供一个c#示例如何将图像加载到Direct2D中吗?

1 个答案:

答案 0 :(得分:1)

我最终使用了SharpDX。

以下是如何使用SharpDX加载图像的一个很好的示例:https://english.r2d2rigo.es/2014/08/12/loading-and-drawing-bitmaps-with-direct2d-using-sharpdx/

ImagingFactory imagingFactory = new ImagingFactory();
NativeFileStream fileStream = new NativeFileStream(@"D:\path\myfile.png",
    NativeFileMode.Open, NativeFileAccess.Read);

BitmapDecoder bitmapDecoder = new BitmapDecoder(imagingFactory, fileStream, DecodeOptions.CacheOnDemand);
BitmapFrameDecode frame = bitmapDecoder.GetFrame(0);

FormatConverter converter = new FormatConverter(imagingFactory);
converter.Initialize(frame, SharpDX.WIC.PixelFormat.Format32bppPRGBA);

newBitmap = SharpDX.Direct2D1.Bitmap1.FromWicBitmap(target, converter); 

target.DrawBitmap(newBitmap,new RawRectangleF(0,0,target.Size.Width,target.Size.Height),1,BitmapInterpolationMode.Linear );

另外,如果你想用SharpDX做整个程序(所以你最终不会使用2个不同的半不兼容的框架),这里有一个工作示例如何做到这一点:https://github.com/dalance/D2dControl