Partilhar via


Desenhar texto (GDI+)

Você pode usar o método DrawString da classe Graphics para desenhar texto em um local especificado ou dentro de um retângulo especificado.

Desenhando texto em um local especificado

Para desenhar texto em um local especificado, você precisa dos objetos Graphics, FontFamily, Font, PointF e Brush.

O exemplo a seguir desenha a cadeia de caracteres "Hello" no local (30, 10). A família de fontes é Times New Roman. A fonte, que é um membro individual da família de fontes, é Times New Roman, tamanho 24 pixels, estilo regular. Suponha que os elementos gráficos são um objeto Graphics existente.

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);

A ilustração a seguir mostra a saída do código anterior.

screen shot of a small window containing the text

No exemplo anterior, o construtor FontFamily recebe uma cadeia de caracteres que identifica a família de fontes. O endereço do objeto FontFamily é passado como o primeiro argumento para o construtor Font. O segundo argumento passado para o construtor Font especifica o tamanho da fonte medido em unidades dadas pelo quarto argumento. O terceiro argumento especifica o estilo (regular, negrito, itálico e assim por diante) da fonte.

O método DrawString recebe cinco argumentos. O primeiro argumento é a cadeia de caracteres a ser desenhada, e o segundo argumento é o comprimento (em caracteres, não bytes) dessa cadeia de caracteres. Se a cadeia de caracteres for terminada em nulo, você poderá passar –1 para o comprimento. O terceiro argumento é o endereço do objeto Font que foi construído anteriormente. O quarto argumento é um objeto PointF que contém as coordenadas do canto superior esquerdo da cadeia de caracteres. O quinto argumento é o endereço de um objeto SolidBrush que será usado para preencher os caracteres da cadeia de caracteres.

Desenhando texto em um retângulo

Um dos métodos DrawString da classe Graphics tem um parâmetro RectF. Chamando esse método DrawString , você pode desenhar texto que quebra em um retângulo especificado. Para desenhar texto em um retângulo, você precisa dos objetos Graphics, FontFamily, Font, RectF e Brush.

O exemplo a seguir cria um retângulo com canto superior esquerdo (30, 10), largura 100 e altura 122. Em seguida, o código desenha uma cadeia de caracteres dentro desse retângulo. A cadeia de caracteres é restrita ao retângulo e envolve de tal forma que as palavras individuais não são quebradas.

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);

A ilustração a seguir mostra o texto desenhado no retângulo.

screen shot of a small window containing a recangle, within which appears the first part of a sentence

No exemplo anterior, o quarto argumento passado para o método DrawString é um objeto RectF que especifica o retângulo delimitador para o texto. O quinto parâmetro é do tipo StringFormat— o argumento é NULL porque nenhuma formatação de cadeia de caracteres especial é necessária.