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.
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.
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.