我开始使用带有c#的Direct2D。
我已下载并使用this example app。
该应用程序运行正常,但我还需要它从硬盘驱动器加载png图像并显示它们。
在示例中,这可以在函数OnRender
中完成,可能使用RenderTarget.DrawBitmap
。
但是,我在实际将png加载到内存时遇到了问题。我知道我应该使用WICImagingFactory
这样的内容,但我无法找到该类,而且我不确定如何使用它来获取所需的D2DBitmap
对象RenderTarget.DrawBitmap
任何人都可以提供一个c#示例如何将图像加载到Direct2D中吗?
答案 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