Creazione di testo (GDI+)
È possibile utilizzare il metodo DrawString della classe Graphics per disegnare testo in una posizione specificata o all'interno di un rettangolo specificato.
Disegno di testo in una posizione specificata
Per disegnare testo in una posizione specificata, sono necessari oggetti Graphics, FontFamily, Font, PointF e Brush.
L'esempio seguente disegna la stringa "Hello" nella posizione (30, 10). La famiglia di caratteri è Times New Roman. Il tipo di carattere, che è un singolo membro della famiglia di caratteri, è Times New Roman, dimensione 24 pixel, stile regolare. Si supponga che la grafica sia un oggetto Graphics esistente.
FontFamily fontFamily(L"Times New Roman");
Font font(&fontFamily, 24, FontStyleRegular, UnitPixel);
PointF pointF(30.0f, 10.0f);
SolidBrush solidBrush(Color(255, 0, 0, 255));
graphics.DrawString(L"Hello", -1, &font, pointF, &solidBrush);
La figura seguente mostra l'output del codice precedente.
Nell'esempio precedente il costruttore FontFamily riceve una stringa che identifica la famiglia di caratteri. L'indirizzo dell'oggetto FontFamily viene passato come primo argomento al costruttore Font. Il secondo argomento passato al costruttore Font specifica le dimensioni del tipo di carattere misurate in unità specificate dal quarto argomento. Il terzo argomento specifica lo stile (normale, grassetto, corsivo e così via) del tipo di carattere.
Il metodo DrawString riceve cinque argomenti. Il primo argomento è la stringa da disegnare e il secondo argomento è la lunghezza (in caratteri, non byte) di tale stringa. Se la stringa è con terminazione Null, è possibile passare -1 per la lunghezza. Il terzo argomento è l'indirizzo dell'oggetto Font costruito in precedenza. Il quarto argomento è un oggetto PointF che contiene le coordinate dell'angolo superiore sinistro della stringa. Il quinto argomento è l'indirizzo di un oggetto SolidBrush che verrà usato per riempire i caratteri della stringa.
Disegno di testo in un rettangolo
Uno dei metodi DrawString della classe Graphics ha un parametro RectF. Chiamando il metodo DrawString , è possibile disegnare testo che esegue il wrapping in un rettangolo specificato. Per disegnare testo in un rettangolo, sono necessari oggetti Graphics, FontFamily, Font, RectF e Brush.
Nell'esempio seguente viene creato un rettangolo con angolo superiore sinistro (30, 10), larghezza 100 e altezza 122. Il codice disegna quindi una stringa all'interno di tale rettangolo. La stringa è limitata al rettangolo e avvolge in modo che le singole parole non vengano interrotte.
WCHAR string[] =
L"Draw text in a rectangle by passing a RectF to the DrawString method.";
FontFamily fontFamily(L"Arial");
Font font(&fontFamily, 12, FontStyleBold, UnitPoint);
RectF rectF(30.0f, 10.0f, 100.0f, 122.0f);
SolidBrush solidBrush(Color(255, 0, 0, 255));
graphics.DrawString(string, -1, &font, rectF, NULL, &solidBrush);
Pen pen(Color(255, 0, 0, 0));
graphics.DrawRectangle(&pen, rectF);
La figura seguente mostra il testo disegnato nel rettangolo.
Nell'esempio precedente il quarto argomento passato al metodo DrawString è un oggetto RectF che specifica il rettangolo di delimitazione per il testo. Il quinto parametro è di tipo StringFormat. L'argomento è NULL perché non è necessaria alcuna formattazione di stringa speciale.