IDWriteTextLayout インターフェイス
IDWriteTextLayout インターフェイスは、完全に分析および書式設定された後のテキストのブロックを表します。
メンバー
IDWriteTextLayout インターフェイス の継承元は次のとおりです: IDWriteTextFormat. IDWriteTextLayout は次のメンバーも定義します:
- メソッド
メソッド
IDWriteTextLayout インターフェイス は次の項目を定義します: メソッド.
メソッド | 説明 |
---|---|
Draw | 指定されたクライアント描画コンテキストを使用して、テキストを描画します。 |
GetClusterMetrics | 各グリフ クラスターの論理プロパティおよび測定値を取得します。 |
DetermineMinWidth | 単語全体の文字間に改行を挿入しないでレイアウトに設定できる最小の幅を判断します。 |
GetDrawingEffect | 指定されたテキスト位置のアプリケーション定義の描画効果を取得します。 |
GetFontCollection | 指定された位置にあるテキストに関連付けられたフォント コレクションを取得します。 |
GetFontFamilyName | 指定された位置にあるテキストのフォント ファミリ名をコピーします。 |
GetFontFamilyNameLength | 現在の位置のフォント ファミリ名の長さを取得します。 |
GetFontSize | 指定された位置にあるテキストのフォントの高さ (em 単位) を取得します。 |
GetFontStretch | 指定された位置にあるテキストのフォント伸縮を取得します。 |
GetFontStyle | 指定された位置にあるテキストのフォント スタイル (斜度とも呼ばれます) を取得します。 |
GetFontWeight | 指定された位置にあるテキストのフォントの太さを取得します。 |
GetInlineObject | 指定された位置にあるインライン オブジェクトを取得します。 |
GetLineMetrics | テキスト文字列の各テキスト行に関する情報を取得します。 |
GetLocaleName | 指定された位置にあるテキストのロケール名を取得します。 |
GetLocaleNameLength | 指定された位置にあるテキストのロケール名の長さを取得します。 |
GetMaxHeight | レイアウトの最大の高さを取得します。 |
GetMaxWidth | レイアウトの最大の幅を取得します。 |
GetMetrics | 書式設定された文字列のメトリック全体を取得します。 |
GetOverhangMetrics | レイアウトの張り出し (デバイス非依存のピクセル (DIP) 単位) とその中に含まれるすべてのオブジェクト (テキスト グリフやインライン オブジェクトなど) を返します。 |
GetStrikethrough | 指定された位置にあるテキストの取り消し線の存在を取得します。 |
GetTypography | 指定された位置にあるテキストの文字体裁設定を取得します。 |
GetUnderline | 指定された位置にあるテキストの下線の有無を取得します。 |
HitTestPoint | レイアウト ボックス内の指定された位置の DWRITE_HIT_TEST_METRICS 構造体を取得します。また、指定された位置が、テキスト レイアウトによって表されるテキスト文字列の内部にあるかどうかを報告します。 |
HitTestTextPosition | 指定されたテキスト位置のレイアウト ボックスの左上を基準とした位置と、テキスト位置を囲む出力ジオメトリが格納された DWRITE_HIT_TEST_METRICS 構造体を取得します。 |
HitTestTextRange | 最初のテキスト位置およびテキストの長さが指定されている場合、指定されたテキスト位置の DWRITE_HIT_TEST_METRICS 構造体を取得します。 |
SetDrawingEffect | アプリケーション定義の描画効果を設定します。 |
SetFontCollection | フォント コレクションを設定します。 |
SetFontFamilyName | NULL で終了する、指定されたテキスト範囲内のテキストのフォント ファミリ名を設定します。 |
SetFontSize | 指定されたテキスト範囲内のテキストのフォントの高さ (em 単位) を設定します。 |
SetFontStretch | 指定されたテキスト範囲内のテキストのフォント伸縮を設定します。 |
SetFontStyle | 指定されたテキスト範囲内のテキストのフォント スタイルを設定します。 |
SetFontWeight | 指定されたテキスト範囲内のテキストのフォントの太さを設定します。 |
SetInlineObject | インライン オブジェクトを設定します。 |
SetLocaleName | 指定されたテキスト範囲内のテキストのロケール名を設定します。 |
SetMaxHeight | レイアウトの最大の高さを設定します。 |
SetMaxWidth | レイアウトの最大の幅を設定します。 |
SetStrikethrough | 指定されたテキスト範囲内のテキストの取り消し線を設定します。 |
SetTypography | 指定されたテキスト範囲内のテキストのフォント文字体裁機能を設定します。 |
SetUnderline | 指定されたテキスト範囲内のテキストの下線を設定します。 |
解説
IDWriteTextLayout インターフェイスへの参照を取得するには、次のコードに示すように、アプリケーションで IDWriteFactory::CreateTextLayout メソッドを呼び出す必要があります。
// Create a text layout using the text format.
if (SUCCEEDED(hr))
{
RECT rect;
GetClientRect(hwnd_, &rect);
float width = rect.right / dpiScaleX_;
float height = rect.bottom / dpiScaleY_;
hr = pDWriteFactory_->CreateTextLayout(
wszText_, // The string to be laid out and formatted.
cTextLength_, // The length of the string.
pTextFormat_, // The text format to apply to the string (contains font information, etc).
width, // The width of the layout box.
height, // The height of the layout box.
&pTextLayout_ // The IDWriteTextLayout interface pointer.
);
}
IDWriteTextLayout インターフェイスを使用すると、アプリケーションは、DWRITE_TEXT_RANGE 構造体で指定される、そのインターフェイスが表すテキストの範囲の書式を変更できるようになります。次の例は、特定のテキスト範囲のフォントの太さを設定する方法を示しています。
// Set the font weight to bold for the first 5 letters.
DWRITE_TEXT_RANGE textRange = {0, 4};
if (SUCCEEDED(hr))
{
hr = pTextLayout_->SetFontWeight(DWRITE_FONT_WEIGHT_BOLD, textRange);
}
IDWriteTextLayout には、取り消し線、下線、およびインライン オブジェクトをテキストに追加するメソッドも用意されています。
IDWriteTextLayout オブジェクトで表されるテキストのブロックを描画するために、Direct2D には ID2D1RenderTarget::DrawTextLayout メソッドが用意されています。カスタム レンダラーを使用して描画するには、IDWriteTextRenderer インターフェイスを実装し、IDWriteTextLayout::Draw メソッドを呼び出します。
DirectWrite と Direct2D
IDWriteTextLayout オブジェクトで表される書式設定された文字列を描画するために、Direct2D には ID2D1RenderTarget::DrawTextLayout メソッドが用意されています。
その他のレンダリング オプション
カスタム レンダラーを使用してレンダリングするには、次のコードに示すように、IDWriteTextLayout::Draw メソッドを使用します。このメソッドは、IDWriteTextRenderer から派生したコールバック インターフェイスを引数として受け取ります。
// Draw the text layout using DirectWrite and the CustomTextRenderer class.
hr = pTextLayout_->Draw(
NULL,
pTextRenderer_, // Custom text renderer.
origin.x,
origin.y
);
IDWriteTextRenderer は、グリフ実行、下線、取り消し線、およびインライン オブジェクトを描画するためのメソッドを宣言します。これらのメソッドを実装するかどうかはアプリケーションによって異なります。カスタム テキスト レンダラーを作成することで、アプリケーションからテキストをレンダリングするときに、カスタムの塗りつぶしや輪郭などの追加の効果を適用することができます。
また、カスタム テキスト レンダラーを使用すると、GDI などの別のテクノロジを使用してレンダリングすることもできます。
要件
クライアントの最小要件 |
Windows 7, Windows Vista SP2 および Windows Vista 用のプラットフォーム更新プログラム |
サーバーの最小要件 |
Windows Server 2008 R2, Windows Server 2008 SP2 および Windows Server 2008 用のプラットフォーム更新プログラム |
ヘッダー |
Dwrite.h |
ライブラリ |
Dwrite.lib |
DLL |
Dwrite.dll |