- 19
- 0
- 约8.05千字
- 约 7页
- 2017-06-24 发布于重庆
- 举报
SharpDX之Direct2D教程II加载位图文件和保存位图文件
绘制位图是绘制操作的不可缺少的一部分。在Direct2D中绘制位图,必须先利用WIC组件将位图加载到内存中,再绘制到RenderTarget中去
?
在SharpDX中绘制位图,分成两个部分:
利用WIC在SharpDX中加载位图,生成Bitmap对象
利用RenderTarget对象的DrawBitmap方法把Bitmap对象绘制到RenderTarget中去
?
利用WIC在SharpDX中加载位图文件
?
利用WIC在SharpDX中绘制位图文件的核心内容就是把位图文件转换为Bitmap对象。它的操作过程如下:
1、创建WIC的ImagingFactory类。
2、根据位图文件创建BitmapDecoder对象(实际上调用系统解码器解析位图文件)。
????? BitmapDecoder对象有1个属性和1个函数
????? FrameCount属性:只读属性,说明该位图对象包含的帧数。一般gif文件能包含多个帧,其余格式的一般只有1个帧
????? GetFrame函数:返回指定帧对象。参数index是整形,说明是第几帧(从0开始)。返回的是BitmapFrameDecode对象
3、利用BitmapDecoder对象的GetFrame函数,返回指定帧的BitmapFrameDecode对象。(参数index一般是0,返回第1帧)
?
一般情况下,到此就可以了。但是,位图格式有很多,你可能不是很确定你的位图格式是否兼容SharpDX的Bitmap对象。因此,比较好的做法是继续下面的步骤,将位图格式转换为兼容SharpDX的Bitmap对象
?
4、创建FormatConverter对象。该对象负责进行格式转换。
5、调用FormatConverter对象的Initialize方法,进行格式转换。
?
6、最后,利用Bitmap对象的FromWicBitmap函数将之前的FormatConverter对象转换为SharpDX的Bitmap对象
?
和Windows API Code Pack 1.1中的Direct2D略有不同的是,BitmapFrameDecode对象和FormatConverter对象都继承BitmapSource对象,省去了一个转换的过程
?
下面是代码
??????Protected?Function?LoadBitmap(Render?As?D2D.RenderTarget, File?As?String, FrameIndex?As?Integer)?As?D2D.Bitmap?????????Dim?Decoder?As?New?WIC.BitmapDecoder(_ImagingFactory, File, DX.IO.NativeFileAccess.Read, WIC.DecodeOptions.CacheOnLoad)?????????If?FrameIndex Decoder.FrameCount - 1?OrElse?FrameIndex 0?Then?FrameIndex = 0?????????Dim?Source?As?WIC.BitmapFrameDecode?= Decoder.GetFrame(FrameIndex)?????????Dim?Converter?As?New?WIC.FormatConverter(_ImagingFactory)???????? Converter.Initialize(Source, WIC.PixelFormat.Format32bppPBGRA)?????????Return?D2D.Bitmap.FromWicBitmap(Render, Converter)?????End?Function?
利用RenderTarget对象的DrawBitmap方法把Bitmap对象绘制到RenderTarget中去
下面是DrawBitmap方法的原型定义:
??Public?Sub?DrawBitmap(bitmap?As?D2D.Bitmap, destinationRectangle?As?DX.RectangleF, opacity?As?Single, interpolationMode?AsD2D.BitmapInterpolationMode, sourceRectangle?As?DX.RectangleF)?Public?Sub?DrawBitmap(bitmap?As?D2D.Bitmap, opacity?As?Single, interpolationMode?As?D2D.BitmapInterpolationMode)?Public?Sub?DrawBitmap(bitmap?
您可能关注的文档
最近下载
- XCT80L6_1汽车起重机技术规格书.pdf VIP
- 索尼SW7600GR中文说明书.pdf
- 2026年时事政治测试题库100道附参考答案(完整版).docx VIP
- 儿科抢救药品临床应用与管理.pptx VIP
- 河北广谋新材料科技有限公司年产600万平方米复合革及隔音布、400万平方米新型复合网项目环境影响报告表.docx VIP
- 部编版语文五年级下册第七单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第六单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第五单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第四单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第三单元教材解读大单元集体备课.pptx VIP
原创力文档

文档评论(0)