Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Letra en un cuadrado (https://www.clubdelphi.com/foros/showthread.php?t=36697)

Walcasar 20-10-2006 18:31:47

Letra en un cuadrado
 
Muchachos tengo el siguiente problema haber si alguien me puede ayudar.

En un TBitmap dibujo un cuadrado y debo colocar en su interior una letra ¿cómo hago para poder colocar esa letra y que quede centrada en el interior del cuadrado? :confused:

Saludos y gracias

Neftali [Germán.Estévez] 20-10-2006 18:44:06

Si utilizas un TImage con un Bitmap, puede hacerlo con un código como este.
Código Delphi [-]
  Image1.Canvas.Brush.Style := bsClear;
  Image1.Canvas.TextOut(100, 100, 'A');

Para que salga centrada, puedes calcular X e Y en función del ancho del componente y utilizar TextWidth para afinar más...

Walcasar 20-10-2006 18:45:59

Gracias soy novato en esto.

seoane 20-10-2006 18:46:34

Pues calculando la posición, no es una operación tan complicada. Para eso puedes usar las propiedades TextHeight y TextWidth del Canvas, que te dan respectivamente la altura y el ancho de un texto dentro de ese canvas con la fuente actual. Por ejemplo:

Código Delphi [-]
var
  Bitmap: TBitmap;
  R: TRect;
begin
  Bitmap:= TBitmap.Create;
  try
    // Creamos un bitmap de 100x100
    Bitmap.Width:= 100;
    Bitmap.Height:= 100;
    // Indicamos las coordenadas del rectangulo
    R:= Rect(10,10,90,90);
    // Dibujamos el rectangulo
    Bitmap.Canvas.Rectangle(R);
    // Escribimos la letra
    Bitmap.Canvas.Font.Size:= 32;
    with Bitmap.Canvas do
      TextOut(
        (R.Left + R.Right - TextWidth('A')) div 2,
        (R.Top + R.Bottom - TextHeight('A')) div 2,
        'A');
    // Ahora por ejemplo lo dibujo, tu haz lo que quieras con el
    Canvas.Draw(0,0,Bitmap);
  finally
    Bitmap.Free;
  end;
end;

Walcasar 20-10-2006 19:00:42

Muchas gracias por la ayuda es justo lo que necesito, maestros.

roman 20-10-2006 20:15:10

Otra opción:

Código Delphi [-]
Windows.DrawText(Canvas.Handle, 'A', -1, R, DT_CENTER or DT_VCENTER or DT_SINGLELINE);

donde Canvas es el canvas del bitmap y R el rectángulo donde se quiere centrar la letra.

// Saludos


La franja horaria es GMT +2. Ahora son las 00:18:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi