WTL-DWM,Direct2D

DWM和Direct2D都是基于Direct3D的技术,因此二者很容易配合在一起使用。在上一篇文章中所编写的小程序,要想启用DWM的半透明效果只需要对程序做些简单修改即可:

1.将背景画刷改为黑色;

2.在窗口类继承列表添加CDwmImpl<>,在OnCreate()函数中调用DwmExtendFrameIntoEntireClientArea();

3.修改创建RenderTarget的代码为:

D2D1_SIZE_U size = SizeU(rc.Width(),rc.Height());

D2D1_PIXEL_FORMAT pixFormat = PixelFormat(

    DXGI_FORMAT_B8G8R8A8_UNORM,

    D2D1_ALPHA_MODE_PREMULTIPLIED);

IFR(m_spD2dFactory->CreateHwndRenderTarget(

    RenderTargetProperties(D2D1_RENDER_TARGET_TYPE_DEFAULT,pixFormat),

    HwndRenderTargetProperties(m_hWnd,size),

    &m_spHwndRT));

 

修改后的效果:

ScreenShot00119

你可能感兴趣的:(DI)