Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > FireMonkey
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-07-2015
wolfran_hack wolfran_hack is offline
Miembro
 
Registrado: abr 2013
Posts: 97
Poder: 11
wolfran_hack Va por buen camino
Texto de Edit a Image BMP?

Tenemos un Edit que tiene un texto, por ejemplo un numero y necesitamos que ese numero se aplique a un Image o bmp con negrita y demás para ser impreso. Esto es posible?
Responder Con Cita
  #2  
Antiguo 27-07-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Necesitas si o si la imagen? No podes usar un RichEdit?
Responder Con Cita
  #3  
Antiguo 27-07-2015
wolfran_hack wolfran_hack is offline
Miembro
 
Registrado: abr 2013
Posts: 97
Poder: 11
wolfran_hack Va por buen camino
si tiene que ser una imagen porque el printer de delphi xe no se pasa a multiplataforma y solo logre imprimir bmp
Responder Con Cita
  #4  
Antiguo 27-07-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
No soy ningun experto pero proba con esto

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    PaintBox1: TPaintBox;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  // dibujar texto del edit en el paintbox
  PaintBox1.Canvas.Font.Style := [fsBold];
  PaintBox1.Canvas.Font.Name := 'Calibri';
  PaintBox1.Canvas.Font.Size := 190;
  PaintBox1.Color := clWhite;
  PaintBox1.Canvas.Rectangle(0, 0, PaintBox1.Width, PaintBox1.Height);
  PaintBox1.Canvas.TextOut(PaintBox1.Width div 4, 1, Edit1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  FImage: TBitmap;
  FDest, FSource: TRect;
begin
  // guardar la imagen generada
  FImage := TBitmap.Create;
  try
    FImage.Height := PaintBox1.Height;
    FImage.Width := PaintBox1.Width;
    FDest := Rect(0, 0, FImage.Width, FImage.Height);
    FSource := Rect(0, 0, PaintBox1.Width, PaintBox1.Height);
    FImage.Canvas.CopyRect(FDest, PaintBox1.Canvas, FSource);
    // guardar la imagen..
    FImage.SaveToFile('test.bmp');
  finally
    FImage.Free;
  end;
end;

end.
Responder Con Cita
  #5  
Antiguo 27-07-2015
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 wolfran_hack.

Otra opción:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Color      := clSilver; // (*)
  Edit1.Font.Name  := 'Segoe Print';
  Edit1.Font.Size  := 12;
  Edit1.Font.Style := Edit1.Font.Style + [fsBold];
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  bm : TBitmap;
  cc : TControlCanvas;
  sz : TSize;
begin
  bm := Image1.Picture.Bitmap;
  cc := TControlCanvas.Create;
  try
    cc.control :=  Edit1;
    cc.Font.Assign(Edit1.Font);
    bm.Width  := cc.ClipRect.Right;
    bm.Height := cc.ClipRect.Bottom;
    GetTextExtentPoint32(cc.Handle, PChar(Edit1.Text), Length(Edit1.Text), sz);
    BitBlt(bm.Canvas.Handle, 0, 0, sz.cx, sz.cy, cc.Handle, 0, 0, SRCCOPY);
  finally
    cc.free;
  end;
end;
(*) El color clSilver es a fin de resaltar el área de lo copiado.

Salida:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 27-07-2015 a las 22:49:04.
Responder Con Cita
  #6  
Antiguo 27-07-2015
wolfran_hack wolfran_hack is offline
Miembro
 
Registrado: abr 2013
Posts: 97
Poder: 11
wolfran_hack Va por buen camino
@ecfisa: Mil gracias, es exactamente lo que estaba buscando. Le agrego un .Picture Nil para limpiarla y volver a generarla.

Código Delphi [-]
  sz : TSize;
begin
  Image1.Picture := nil;
  bm := Image1.Picture.Bitmap;

Por ahora en Delphi7 funciona, luego probare en el DelphiXE8 haber como funciona.
Responder Con Cita
  #7  
Antiguo 28-07-2015
wolfran_hack wolfran_hack is offline
Miembro
 
Registrado: abr 2013
Posts: 97
Poder: 11
wolfran_hack Va por buen camino
No en Delphi XE8 no funciona. Encontré que se puede hacer con canvas pero no aparece el texto.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  MyRect: TRectF;
  x1, y1, x2, y2: integer;
begin
  x1 := 60;
  y1 := 60;
  x2 := MainImage.Bitmap.Canvas.Width - 60;
  y2 := MainImage.Bitmap.Canvas.Height - 60;
  MyRect := TRectF.Create(x1, y1, x2, y2);
  // fills and draws the text in the specified rectangle area of the canvas
  MainImage.Bitmap.Canvas.BeginScene;
  MainImage.Bitmap.Canvas.FillText(MyRect, TextEdit.Text, false, 100,[TFillTextFlag.RightToLeft], TTextAlign.Center, TTextAlign.Center);
  MainImage.Bitmap.Canvas.EndScene;
  // updates the bitmap
  //MainImage.Bitmap.BitmapChanged;
end;
Responder Con Cita
  #8  
Antiguo 28-07-2015
wolfran_hack wolfran_hack is offline
Miembro
 
Registrado: abr 2013
Posts: 97
Poder: 11
wolfran_hack Va por buen camino
Solucionado con

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
  var
    Rect: TRectF;
  begin
    with Image1.Bitmap do
      begin
        SetSize(Trunc(Image1.Width), Trunc(Image1.Height));
        Clear(TAlphaColors.White);
        Canvas.BeginScene();
        Canvas.Fill.Color := TAlphaColors.Black;
        Canvas.Font.Size := 60;
        Rect.Create(0, 0, Trunc(Image1.Width), Trunc(Image1.Height));
        Canvas.FillText(Rect,
                        Edit1.Text,
                        False,
                        100,
                        [],
                        TTextAlign.Center,
                        TTextAlign.Center);
        Canvas.EndScene();
      end;
  end;
Responder Con Cita
  #9  
Antiguo 28-07-2015
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 wolfran_hack.

Primero que nada me alegra que hayas encontrado una solución

Ignoraba que fuera para aplicar a esa version (y desconozco la misma), pero de tu primer mensaje, había entendido que deseabas reproducir fielmente la fuente del edit.
Y del último código me surge una duda: ¿ De donde o como, logras obtener las propiedades tales como negrita, tamaño, etc. que posee la fuente del TEdit ?

Por ejemplo desconozco la función de la línea:
Código Delphi [-]
Canvas.BeginScene();

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 28-07-2015
wolfran_hack wolfran_hack is offline
Miembro
 
Registrado: abr 2013
Posts: 97
Poder: 11
wolfran_hack Va por buen camino
El TCanvas, es para básicamente dibujar, esta en otros lenguajes como CSS y Java, el BeginScene es para comenzar a dibujar y el EndScene indica que termino el dibujo. De igual manera se puede cambiar la fuente, color, tamaño, etc.
Responder Con Cita
  #11  
Antiguo 28-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Eso es el Canvas estandar de delphi?
Responder Con Cita
  #12  
Antiguo 28-07-2015
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 wolfran_hack.

Si si, obviamente entiendo el cometido de TCanvas, es sólo que ignoraba la funcionalidad de BeginScene y EndScene gracias por la aclaración.
Entonces sigo sin explicarme como obtenes los valores de la propiedad Font del TEdit, da la impresión que son asignados de forma arbitraria.

¿ Estas usando VCL ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #13  
Antiguo 28-07-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
BeginEscene y EndEscene proviene desde alguna edición XE. Posiblemente desde la XE5. Para los demás que estan con ediciones anteriores es totalmente natural desconocerlo.

Ya es hora de que cuando se pida asesoría se indique la versión de Delphi ¿no creen?. Ya es mayúscula la diferencia entre las ediciones XE5+ y las D7- En lo ques gráfica por sobre todo, con la llegada de FMX los cambios se multiplicaron.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #14  
Antiguo 28-07-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Por como usa los enumerativos todo parece indicar que es FireMonkey

Código Delphi [-]
TAlphaColors.White  --> en VCL clWhite
TAlphaColors.Black  --> en VCL clBlack
TTextAlign.Center    --> en VCL alCenter
TTextAlign.Center

No solo indicar version de Delphi, sino tambien diferenciar en FMX y VCL, son dos framework que cada dia son mas diferentes
Responder Con Cita
  #15  
Antiguo 28-07-2015
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 wolfran_hack.

Toma en cuenta estas útiles sugerencias:
Cita:
Empezado por Delphius Ver Mensaje
...
Ya es hora de que cuando se pida asesoría se indique la versión de Delphi ¿no creen?. Ya es mayúscula la diferencia entre las ediciones XE5+ y las D7- En lo ques gráfica por sobre todo, con la llegada de FMX los cambios se multiplicaron.
Cita:
Empezado por AgustinOrtu Ver Mensaje
Por como usa los enumerativos todo parece indicar que es FireMonkey
...
No solo indicar version de Delphi, sino tambien diferenciar en FMX y VCL, son dos framework que cada dia son mas diferentes
Y además existe un foro dedicado a FireMonkey, motivo por el cuál he movido este hilo al mismo.

Saludos y gracias por tu colaboración
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #16  
Antiguo 28-07-2015
wolfran_hack wolfran_hack is offline
Miembro
 
Registrado: abr 2013
Posts: 97
Poder: 11
wolfran_hack Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
BeginEscene y EndEscene proviene desde alguna edición XE. Posiblemente desde la XE5. Para los demás que estan con ediciones anteriores es totalmente natural desconocerlo.

Ya es hora de que cuando se pida asesoría se indique la versión de Delphi ¿no creen?. Ya es mayúscula la diferencia entre las ediciones XE5+ y las D7- En lo ques gráfica por sobre todo, con la llegada de FMX los cambios se multiplicaron.
Principalmente lo quería hacer en Delphi 7, por este motivo lo coloque en Gráficos, luego como funciono quice pasarlo a Delphi XE8, por eso no indique que versión era, de igual manera la información que aportaron fue muy útil. Aunque no se porque TImage se ve pequeño y no respeta tamaños en Android.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
El objeto image sobre otra image CarlosAlberto Varios 2 26-01-2013 01:27:54
comparar un texto de un listbox con un texto de un edit juaarias Varios 1 04-10-2011 02:13:10
Hacer Drag&Drop desde otro programa a texto (RichEdit) o imagen (Image) en mi program rrf Varios 2 24-02-2009 15:38:06
Image Edit Grushenka Varios 0 29-10-2008 14:54:34
¿Cómo gestionar una bd de acces, que contiene un campo de texto y otro con una image? Acuarius3000 Conexión con bases de datos 1 17-01-2005 10:45:33


La franja horaria es GMT +2. Ahora son las 17:19:57.


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