Direct 2D是一个 采用立即模式 绘图的2D 图形API,也就是跟显卡驱动打交道的一个小程序,图形业务能力包括 2-D geometry, bitmaps, and text。
WM_Paint:
ValidateRect(window, 0);
//let WM_Paint message just once, and get rid of update region(that will send paint msg.)
//if windowsize changes WM_Paint also reloaded
一、渲染text
为什么要用DirectWrite,因为要自己做一个文本编辑器,需要用到
1、对文本的渲染、
2、分辨率无关轮廓字体、
3、完整的Unicode文本、
4、布局支持
DirectWriteAPI支持多格式文本的测量、绘制和点击测试。
实际上就是提供text_format的一个接口,当得到了一个text_format后,就利用ID2D1HwndRenderTarget 对象的render target去 drawtext(… text_format,brushcolor)
1 - D2D1CreateFactory(…&d2d_factory)创造一个factory object,该对象可使用Direct2D 的相关资源。
2 - DWriteCreateFactory(…&dwrite_factory)创建一个DirectWrite factory object,用于随后各个directwrite object的创建。
dwrite_factory 包含了DirectWrite 内部状态数据,比如 字体装载注册, 缓存的字体数据。注意:directwrite的各个组件可以共享一个DirectWrite内部状态数据。
设置文本格式
dwrite_factory->CreateTextFormat(…,&text_format)