Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
DirectWrite biedt twee interfaces voor het opmaken van tekst: IDWriteTextFormat en IDWriteTextLayout-. IDWriteTextFormat beschrijft alleen de notatie voor tekst en wordt gebruikt in gevallen waarin een hele tekenreeks dezelfde tekengrootte, stijl, gewicht enzovoort moet zijn. Aan de andere kant bevat IDWriteTextLayout zowel een tekenreeks als de opmaak voor opgegeven bereiken van de tekenreeks inkapselt. In dit document worden elke interface en het gebruik ervan beschreven. Zie de IDWriteTextFormat en IDWriteTextLayout referentiepagina's voor meer informatie over het maken en methoden van deze interfaces.
Dit document bevat de volgende onderdelen:
IDWriteTextFormat
Een IDWriteTextFormat--object wordt gebruikt voor het volgende:
- Beschrijf de notatie voor een hele tekenreeks bij het weergeven. Als u een tekenreeks met meerdere indelingen wilt weergeven, gebruikt u een IDWriteTextLayout-object.
- Geef de standaardtekstindeling op bij het maken van een IDWriteTextLayout--object.
Als u een IDWriteTextFormat--object wilt maken, gebruikt u de methode IDWriteFactory::CreateTextFormat methode en geeft u de lettertypefamilie, lettertypeverzameling, tekendikte, tekengrootte (in DIPs), landinstellingsnaam op.
Een IDWriteTextFormat wijzigen
Zodra een idWriteTextFormat interface is gemaakt, kunnen sommige waarden niet worden gewijzigd: de lettertypefamilie, verzameling, gewicht en grootte, evenals de landinstellingsnaam. Als u deze waarden wilt wijzigen, moet een nieuw IDWriteTextFormat object worden gemaakt.
IDWriteTextLayout- kunt u de bovenstaande eigenschappen wijzigen zonder iets opnieuw te maken. IDWriteTextFormat kunt u opmaakwijzigingen aanbrengen die van toepassing zijn op de hele tekst, zoals tekstuitlijning. Als u opmaak wilt toepassen op specifieke tekenbereiken, moet u dit doen met behulp van een IDWriteTextLayout-.
IDWriteTextFormat biedt methoden voor het instellen van de tekstuitlijning, stroomrichting, incrementele tabstop, regelafstand, alinea-uitlijning, bijsnijden en tekstterugloop. Deze eigenschappen kunnen op elk gewenst moment worden gewijzigd nadat het IDWriteTextFormat-object is gemaakt.
IDWriteTextLayout
De interface IDWriteTextLayout interface, in tegenstelling tot IDWriteTextFormat, vertegenwoordigt zowel een tekstblok als de bijbehorende opmaak. IDWriteTextFormat de eerste opmaakgegevens vertegenwoordigt. In het volgende voorbeeld ziet u hoe u een IDWriteTextLayout--object maakt met behulp van 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.
);
}
De tekst in een IDWriteTextLayout object kan niet worden gewijzigd nadat het object is gemaakt. Als u de tekst wilt wijzigen, moet u het bestaande object verwijderen en een nieuw IDWriteTextLayout-object maken.
U kunt een IDWriteTextLayout- gebruiken om opgegeven tekstbereiken op te maken. IDWriteTextLayout- biedt ook methoden voor het wijzigen van de tekenstijl en het gewicht en het toevoegen van OpenType-tekenfuncties en het testen van treffers. Zie de referentiepagina IDWriteTextLayout voor meer informatie en een volledige lijst met methoden.
Een tekstbereik opmaken
IDWriteTextLayout biedt verschillende methoden voor het opmaken van tekstbereiken. Elk van deze methoden heeft een DWRITE_TEXT_RANGE structuur als parameter om de begintekstpositie in de tekenreeks en de lengte van het bereik op te geven die moet worden opgemaakt. In het volgende voorbeeld ziet u hoe u het tekengewicht van een tekstbereik vet kunt instellen.
// 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);
}
Renderingopties
Tekst met opmaak die wordt beschreven door slechts een IDWriteTextFormat object kan worden weergegeven met Direct2D-. Er zijn echter nog enkele opties voor het weergeven van een IDWriteTextLayout--object.
De tekenreeks die wordt beschreven door een IDWriteTextLayout-object kan worden weergegeven met behulp van de onderstaande methoden.