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

posted on 2010-10-08 23:06  wudong  阅读(1531)  评论(3编辑  收藏  举报

导航