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