Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
DirectWrite poskytuje dvě rozhraní pro formátování textu: IDWriteTextFormat a IDWriteTextLayout. IDWriteTextFormat popisuje pouze formát textu a používá se v případech, kdy má být celý řetězec stejnou velikostí písma, stylem, tloušťkou atd. Na druhé straně IDWriteTextLayout zapouzdřuje textový řetězec i formátování pro zadané oblasti řetězce. Tento dokument popisuje jednotlivá rozhraní a jejich použití. Další informace o vytváření a metodách těchto rozhraní naleznete v IDWriteTextFormat a IDWriteTextLayout referenční stránky.
Tento dokument obsahuje následující části:
-
IDWriteTextFormat
- úprava IDWriteTextFormat
-
IDWriteTextLayout
- Formátování oblasti textu
- možnosti vykreslování
IdWriteTextFormat
Objekt IDWriteTextFormat slouží k:
- Popište formát celého řetězce při vykreslování. Pokud chcete vykreslit řetězec s více formáty, použijte objekt IDWriteTextLayout.
- Při vytváření objektu IDWriteTextLay out zadejte výchozí formát textu.
Chcete-li vytvořit objekt IDWriteTextFormat, použijte metodu IDWriteFactory::CreateTextFormat a zadejte rodinu písem, kolekci písem, tloušťku písma, velikost písma (v dips), název národního prostředí.
Úprava formátu IDWriteTextFormat
Po vytvoření rozhraní IDWriteTextFormat nelze některé hodnoty změnit: rodinu písem, kolekci, tloušťku a velikost a také název národního prostředí. Chcete-li tyto hodnoty změnit, musí být vytvořen nový IDWriteTextFormat objektu.
IDWriteTextLayout umožňuje změnit výše uvedené vlastnosti bez opětovného vytvoření čehokoli. IDWriteTextFormat umožňuje provádět změny formátu, které platí pro celý text, například zarovnání textu. Pokud chcete použít formátování u konkrétních oblastí znaků, měli byste to udělat pomocí IDWriteTextLayout.
IDWriteTextFormat poskytuje metody pro nastavení zarovnání textu, směru toku, přírůstkové zarážky tabulátoru, řádkování, zarovnání odstavce, oříznutí a zalamování slov. Tyto vlastnosti lze kdykoli změnit po vytvoření objektu IDWriteTextFormat.
IDWriteTextLayout
Rozhraní IDWriteTextLayout, na rozdíl od IDWriteTextFormat, představuje blok textu i přidružené formátování. IDWriteTextFormat představuje počáteční informace o formátování. Následující příklad ukazuje, jak vytvořit IDWriteTextLayout objekt pomocí 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.
);
}
Text v objektu IDWriteTextLayout nelze po vytvoření objektu změnit. Chcete-li změnit text, musíte odstranit existující objekt a vytvořit nový IDWriteTextLayout objektu.
K formátování zadaných oblastí textu můžete použít IDWriteTextLayout. IDWriteTextLayout také poskytuje metody pro změnu stylu a tloušťky písma a přidání funkcí písma OpenType a testování. Další informace a úplný seznam metod naleznete IDWriteTextLayout referenční stránku.
Formátování oblasti textu
IDWriteTextLayout poskytuje několik metod formátování rozsahů textu. Každá z těchto metod přebírá DWRITE_TEXT_RANGE strukturu jako parametr, který určuje počáteční pozici textu v řetězci a délku rozsahu, který se má formátovat. Následující příklad ukazuje, jak nastavit tloušťku písma rozsahu textu na tučné.
// 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);
}
Možnosti vykreslování
Text s formátováním, které popisuje pouze objekt IDWriteTextFormat lze vykreslit pomocí Direct2D, ale existuje několik dalších možností pro vykreslení IDWriteTextLayout objektu.
Řetězec popsaný IDWriteTextLayout objekt lze vykreslit pomocí níže uvedených metod.
- vykreslení pomocí direct2D.
- Vykreslení pomocí vlastního vykreslovacího modulu textu.
- vykreslení na povrch GDI.