Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-10-2013
@CSE1970 @CSE1970 is offline
Registrado
NULL
 
Registrado: ene 2013
Posts: 8
Poder: 0
@CSE1970 Va por buen camino
Copiar TLabel.Canvas sobre TBitmap.Canvas

Hola,

Necesito escribir un texto en un bitmap en vertical, centrado, la fuente en posición natural, no girada y grabarlo en disco como fichero bmp.

El texto quedaría así:

T

E

X

T

O

Resulta que si creo un TLabel en tiempo de diseño y le doy los ajustes necesarios para que se vea tal cual puedo copiar sin problemas su Canvas sobre un TBitmap creado en tiempo de ejecución. Pero si creo el TLabel en tiempo de ejecución esto no funciona.

El código es el siguiente:

bmp := tbitmap.Create;
bmp.Width := label2.Width; // label2 creada en tiempo de diseño y con el formato descrito
bmp.Height := label2.Height;
rect1 := rect(0,0,label2.width,label2.height);
rect2 := rect1;
bmp.canvas.CopyRect(rect1,label2.Canvas,rect2);
Bmp.SaveToFile('c:\Label.bmp');
bmp.free;

Pero si Label2 la creo en tiempo de ejecución esto no funciona (lease LabelTxt como Label2)

LabelTxt := TLabel.Create(nil);
LabelTxt.Parent := FrmMain; // <- Es esto correcto?
LabelTxt.Alignment := taCenter;
LabelTxt.Layout := tlCenter;
LabelTxt.AutoSize := True;
LabelTxt.Transparent := False;
LabelTxt.Font.Name := 'Arial';
LabelTxt.Font.Size := 30;
LabelTxt.Font.Color := clBlack;

LabelTxt.Caption := 'H'+#13#10+'O'+#13#10+'L'+#13#10+'A';

Algo hago mal evidentemente pero qué es?


Salut!
Responder Con Cita
  #2  
Antiguo 16-10-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola @CSE1970.


Por favor cuando incluyas código en tus mensaje utiliza TAG's para darle más legibilidad:



De este modo se guarda correctamente:
Código Delphi [-]
... 
implementation

var
  LabelX : TLabel;

procedure TFrmMain.btnCreateLabelClick(Sender: TObject);
begin
  LabelX := TLabel.Create(Self);
  with LabelX do
  begin
    Name        := 'LabelX';
    Alignment   := taCenter;
    Layout      := tlCenter;
    AutoSize    := True;
    Transparent := False;
    Font.Name   := 'Arial';
    Font.Size   := 30;
    Font.Color  := clBlack;
    Caption     := 'H'+#13#10+'O'+#13#10+'L'+#13#10+'A';
    Parent      := FrmMain;
  end;
end;

procedure TFrmMain.btnSaveLabelClick(Sender: TObject);
var
  R1 : TRect;
begin
  if Assigned(LabelX) then
    with TBitmap.Create do
    try
      Width  := LabelX.Width;
      Height := LabelX.Height;
      R1     := Rect(0, 0, LabelX.Width, LabelX.Height);
      Canvas.CopyRect(R1, LabelX.Canvas, R1);
      SaveToFile(ExtractFilePath(Application.ExeName) + 'LABEL.BMP');
    finally
      Free;
    end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 23-10-2013
@CSE1970 @CSE1970 is offline
Registrado
NULL
 
Registrado: ene 2013
Posts: 8
Poder: 0
@CSE1970 Va por buen camino
Muchas gracias ecfisa. Tu código funcionó bien.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Canvas del JPG kdemia Varios 0 29-03-2011 03:22:05
Como imprimir con precisión directamente sobre el Canvas de TPrinter Faust Impresión 1 28-01-2009 03:11:03
cordenadas canvas? Zakio_tu Impresión 1 19-11-2008 10:57:03
Borrar canvas Joakin Gráficos 6 19-07-2006 21:06:39
Canvas???? craven Gráficos 2 17-05-2003 14:26:02


La franja horaria es GMT +2. Ahora son las 00:58:53.


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