Megosztás a következőn keresztül:


Szövegformázás és elrendezés

DirectWrite két felületet biztosít a szövegformázáshoz: IDWriteTextFormat és IDWriteTextLayout. IDWriteTextFormat csak a szöveg formátumát írja le, és olyan esetekben használatos, amikor egy teljes sztring betűmérete, stílusa, súlya és így tovább. Másrészt IDWriteTextLayout egy szöveges sztringet és a sztring megadott tartományainak formázását is magában foglalja. Ez a dokumentum az egyes felületeket és azok használatát ismerteti. A felületek létrehozásáról és módszereiről további információt az IDWriteTextFormat és IDWriteTextLayout referenciaoldalakon talál.

Ez a dokumentum a következő részeket tartalmazza:

IDWriteTextFormat

Egy IDWriteTextFormat objektumot használunk a következőre:

  • A teljes sztring formátumának leírása rendereléskor. Több formátumot tartalmazó sztring megjelenítéséhez használjon IDWriteTextLayout objektumot.
  • Adja meg az alapértelmezett szövegformátumot IDWriteTextLayout objektum létrehozásakor.

Ha IDWriteTextFormat objektumot szeretne létrehozni, használja az IDWriteFactory::CreateTextFormat metódust, és adja meg a betűtípuscsaládot, a betűkészletet, a betűvastagságot, a betűméretet (a DIP-ben), a területi beállításokat.

IDWriteTextFormat módosítása

Miután létrehozott egy IDWriteTextFormat felületet, bizonyos értékek nem módosíthatók: a betűcsalád, a gyűjtemény, a súly és a méret, valamint a területi beállítás neve. Az értékek módosításához létre kell hozni egy új IDWriteTextFormat objektumot.

IDWriteTextLayout lehetővé teszi a fenti tulajdonságok módosítását anélkül, hogy bármit újraírna. IDWriteTextFormat lehetővé teszi a teljes szövegre vonatkozó formázási módosításokat, például a szöveg igazítását. Ha adott karaktertartományokra szeretne formázást alkalmazni, ezt egy IDWriteTextLayouthasználatával teheti meg.

IDWriteTextFormat metódusokat biztosít a szöveg igazításának, a folyamat irányának, a növekményes tabulátornak, a sorköznek, a bekezdés igazításának, a vágásnak és a szóburkolásnak a beállításához. Ezek a tulajdonságok az IDWriteTextFormat objektum létrehozása után bármikor módosíthatók.

IDWriteTextLayout

Az IDWriteTextLayout felület IDWriteTextFormatellentétben a szövegblokkot és a hozzá tartozó formázást is jelöli. IDWriteTextFormat a kezdeti formázási információkat jelöli. Az alábbi példa bemutatja, hogyan hozhat létre IDWriteTextLayout objektumot IDWriteFactory::CreateTextLayouthasználatával.

// 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.
        );
}

Az IDWriteTextLayout objektum szövege nem módosítható az objektum létrehozása után. A szöveg módosításához törölnie kell a meglévő objektumot, és létre kell hoznia egy új IDWriteTextLayout objektumot.

Az IDWriteTextLayout használatával formázhatja a megadott szövegtartományokat. IDWriteTextLayout a betűtípus stílusának és súlyának módosítására, valamint OpenType betűtípus-funkciók hozzáadására és tesztelésre is használható. További információkért és a metódusok teljes listájáért tekintse meg az IDWriteTextLayout referenciaoldalát.

Szövegtartomány formázása

IDWriteTextLayout számos módszert kínál a szövegtartományok formázására. Ezek a metódusok paraméterként DWRITE_TEXT_RANGE struktúrát használnak a sztring kezdőszöveg-pozíciójának és a formázandó tartomány hosszának megadásához. Az alábbi példa bemutatja, hogyan állíthatja be egy szövegtartomány betűvastagságát félkövérre.

// Set the font weight to bold for the first 5 letters.
DWRITE_TEXT_RANGE textRange = {0, 5};

if (SUCCEEDED(hr))
{
    hr = pTextLayout_->SetFontWeight(DWRITE_FONT_WEIGHT_BOLD, textRange);
}

Megjelenítési beállítások

A csak IDWriteTextFormat objektum által leírt formázást tartalmazó szöveg Direct2Djeleníthető meg, azonban az IDWriteTextLayout objektum megjelenítésére is van lehetőség.

Az IDWriteTextLayout objektum által leírt sztring az alábbi módszerekkel jeleníthető meg.

  1. Renderelés Direct2Dhasználatával.
  2. Renderelés egyéni szöveg renderelővel.
  3. Renderelés GDI-felületre.