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
- IDWriteTextFormat módosítása
- IDWriteTextLayout
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.