在此基础上,(感谢Direct2D/WIC)经过较小的改动,即可生成一个动态的Gif图片。
只要略微修改以上代码:
将PngBitmapEncoder改成GifBitmapEncoder*
然后将下面的for循环取消注释
将displacement.Scale = 100.0f;改成displacement.Scale = Math.Abs(frameId) * 10.0f;
即可看到以下效果(直接生成,非截图):
结语
最终的代码生成效果,可以从这里下载,用LINQPad 6打开。
本文使用的是SharpDX,是C#到DirectX的转换层。一个坏消息是,上图中使用的SharpDX已经停止维护了,但目前还没找到可以用于替换的库(可能由于它太好用了)。
以前我经常将Direct2D用于游戏,但最近越来越多的时候Direct2D已经用于解决实际问题。由于Direct2D的高颜值、高性能,实际上,Direct2D已经无处不在,浏览器/Word/Excel等日常软件都是深度集成Direct2D的应用。相信Direct2D可以用于更多的场景中。