ID2D1SolidColorBrush* foreBrush = NULL;
ID2D1SolidColorBrush* backBrush = NULL;
if (clientDrawingEffect != NULL)
{
//省略
//背景色を得る
colorDrawingEffect->GetBackColor(&color);
//背景色に対応するブラシを作る
if(SUCCEEDED(hr))
{
hr = pRT_->CreateSolidColorBrush(
color,
&backBrush);
}
SafeRelease(&colorDrawingEffect);
}
else
{
//省略
}
if (SUCCEEDED(hr))
{
//外接する四角形を塗りつぶす
if(backBrush != NULL)
pRT_->FillRectangle(rect,backBrush);
//省略
}
How to Add Client Drawing Effects to a Text Layout (Windows)
こちらのサンプルに上のようなコードを追加しました
スペースを含まない文字列では正しく背景色を塗りつぶすことが出来るのですが、選択した範囲にスペースがあるとその部分だけあいてしまいます
(スペースを含むグリフの幅を取得しようとすると、スペース以外の部分しか取得できないようです)
スペースを含むグリフの幅を正しく取得する方法があれば、教えてほしいです