使用D2D出现的错误

来源:互联网 发布:大势至usb软件 编辑:程序博客网 时间:2024/05/17 03:20

1.VS版本问题

使用VS2013时,WIC组件出现IWICImagingFactory初始化失败,更换成VS2010可正常初始化.
// Create a WIC factory.CoCreateInstance(CLSID_WICImagingFactory,NULL,CLSCTX_INPROC_SERVER,IID_IWICImagingFactory,reinterpret_cast<void **>(&m_pWICImagingFactory));//在这段代码出现问题,m_pWICImagingFactory初始化失败,总是NULL

2.WIC组件创建解码器问题

D2D下加载图片必须使用WIC组件,作者参考微软的D2D教程使用LoadBitmapFromFile函数时,当函数内的CreateDecoderFromFilename函数,
WICDecodeOptions参数为WICDecodeMetadataCacheOnLoad时失败,切换WICDecodeMetadataCacheOnDemand正常.
//Create a WICDecoderhr = m_pWICImagingFactory->CreateDecoderFromFilename(uri,NULL,GENERIC_READ,WICDecodeMetadataCacheOnLoad,&pDecoder);//这段代码出现问题,pDecoder为NULL


3.蒙板问题

使用FillOpecityMask函数,要特别注意。FillOpecityMask函数不像DGI下BitBlt函数提供颜色做蒙板计算,而是图片和画刷的Alpha值(透明度)相乘。即用做蒙板的图片背景需要透明的。
m_pHwndRenderTarget->SetAntialiasMode(D2D1_ANTIALIAS_MODE_ALIASED);m_pHwndRenderTarget->FillOpacityMask(m_pHuman,m_pHumanMaskBursh,D2D1_OPACITY_MASK_CONTENT_GRAPHICS,//RECTFrcbrushRect,D2D1::RectF(0,0,200,200));//为使此方法正常工作,呈现器目标必须使用 D2D1_ANTIALIAS_MODE_ALIASED 抗锯齿模式。可通过调用ID2D1RenderTarget::SetAntialiasMode 方法来设置抗锯齿模式。







1 0
原创粉丝点击