Dibujo de texto (GDI+)
Puede usar el método DrawString de la clase Graphics para dibujar texto en una ubicación especificada o dentro de un rectángulo especificado.
Dibujar texto en una ubicación especificada
Para dibujar texto en una ubicación especificada, necesita objetos Graphics, FontFamily, Font, PointF y Brush .
En el ejemplo siguiente se dibuja la cadena "Hello" en la ubicación (30, 10). La familia de fuentes es Times New Roman. La fuente, que es un miembro individual de la familia de fuentes, es Times New Roman, tamaño 24 píxeles, estilo normal. Supongamos que los gráficos son un 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);
En la ilustración siguiente se muestra la salida del código anterior.
En el ejemplo anterior, el constructor FontFamily recibe una cadena que identifica la familia de fuentes. La dirección del objeto FontFamily se pasa como primer argumento al constructor Font . El segundo argumento pasado al constructor Font especifica el tamaño de la fuente medida en unidades dadas por el cuarto argumento. El tercer argumento especifica el estilo (normal, negrita, cursiva, etc.) de la fuente.
El método DrawString recibe cinco argumentos. El primer argumento es la cadena que se va a dibujar y el segundo argumento es la longitud (en caracteres, no bytes) de esa cadena. Si la cadena termina en null, puede pasar –1 para la longitud. El tercer argumento es la dirección del objeto Font que se construyó anteriormente. El cuarto argumento es un objeto PointF que contiene las coordenadas de la esquina superior izquierda de la cadena. El quinto argumento es la dirección de un objeto SolidBrush que se usará para rellenar los caracteres de la cadena.
Dibujar texto en un rectángulo
Uno de los métodos DrawString de la clase Graphics tiene un parámetro RectF . Al llamar a ese método DrawString , puede dibujar texto que se ajuste en un rectángulo especificado. Para dibujar texto en un rectángulo, necesita objetos Graphics, FontFamily, Font, RectF y Brush .
En el ejemplo siguiente se crea un rectángulo con la esquina superior izquierda (30, 10), el ancho 100 y el alto 122. A continuación, el código dibuja una cadena dentro de ese rectángulo. La cadena está restringida al rectángulo y se ajusta de tal manera que las palabras individuales no se interrumpen.
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);
En la ilustración siguiente se muestra el texto dibujado en el rectángulo.
En el ejemplo anterior, el cuarto argumento pasado al método DrawString es un objeto RectF que especifica el rectángulo delimitador del texto. El quinto parámetro es de tipo StringFormat: el argumento es NULL porque no se requiere ningún formato de cadena especial.