使用DirectWrites SetCharacterSpacing函数



我很难理解这个问题,让dwrite_1.h中的更新/扩展函数与我现有的代码一起工作,希望有人能提供帮助。

这是我现有的设置。。。

// In the .h file
IDWriteFactory* pDWriteFactory_ = nullptr;
IDWriteTextFormat* pTextFormat_ = nullptr;
IDWriteTextLayout* pTextLayout_ = nullptr;
IDWriteTextRenderer* pTextRenderer_ = nullptr;
//in the .cpp file - this is in my own PrepareText() Function.
hr = pDWriteFactory_->CreateTextLayout(
str.c_str(),
str.size(),
pTextFormat_,
gfx.GetWindowWidth(),
gfx.GetWindowHeight(),
&pTextLayout_);

我希望能够使用此处概述的IDWriteTextLayout1::SetCharacterSpacing函数:MSDN链接其在dwrite_1.h 中定义

但是,如果我将IDWriteTextLayout*更改为IDWriteTextLayout1*,我会收到一个错误(C2664(,因为pDWriteFactory_无法用IDWriteTextlay1作为参数初始化-无法转换。如果将IDWriteFactory*更改为IDWriteFactory1*,仍然会发生此错误。

所以我在这里缺少了一些东西,我曾希望IDWriteTextLayout1能够扩展功能,但仍然与现有的IDWriteFactory::CreateTextLayout函数向后兼容,但事实并非如此。

如果有人能透露一些信息,我将不胜感激。

获得IDWriteTextLayout后,对IDWriteTextLayout1执行QueryInterface。

IDWriteTextLayout1 * pLayout1 = nullptr;
hr = pTextLayout->QueryInterface(IID_PPV_ARGS(&pLayout1));
if(FAILED(hr))
{ /* handle error */ }

最新更新