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 24-04-2023
david.camaleon david.camaleon is offline
Miembro
 
Registrado: oct 2008
Posts: 18
Poder: 0
david.camaleon Va por buen camino
Question Asignar el contenido de un datafield de tipo tbitmap a un objeto gráfico Tpath

Buenas tardes,

Lo que trato de hacer es asignar el contenido de un gráfico, en este caso una firma, que cargo desde un TFDQuery a un objeto Tpath.

El paso inverso, es decir pasar del Tpath al Blodfield lo tengo solucionado y funcionando sin problemas.

He estado googleando y no consigo encontrar una solución.

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 24-04-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.757
Poder: 21
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
En principio es la inversa de que lo que te han contestado para cargar.

Código Delphi [-]
  img := Tbitmap.Create(Trunc(Firma.Width), Trunc(Firma.Height));
  try
    img.Canvas.BeginScene;
    try
      firma.PaintTo(img.Canvas, firma.LocalRect);
    finally
      img.Canvas.EndScene;
    end;
    m := TmemoryStream.Create;
    try
      Dataset.close;     
      Dataset.open;     
      Dataset.CampoFIRMA.SavetoStream(m);
      img.LoadFromStream(m);
    finally
      FreeAndNil(m);
    end;
  finally
    FreeAndNil(img);
  end;
Responder Con Cita
  #3  
Antiguo 25-04-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por david.camaleon Ver Mensaje
Lo que trato de hacer es asignar el contenido de un gráfico, en este caso una firma, que cargo desde un TFDQuery a un objeto Tpath.
El paso inverso, es decir pasar del Tpath al Blodfield lo tengo solucionado y funcionando sin problemas.
Por lo que yo he entendido de la pregunta, la respuesta es NO SE PUEDE.
Entiendo que tienes una firma en un formato gráfico (JPG, PNG,...) y quieres cargar el contenifdo en un TPath. En tiendo que con TPath te refieres a la clase gráfica de FMX:
https://docwiki.embarcadero.com/Libr....Objects.TPath

TPath es una forma de representar un gráfico a partir de definir puntos, líneas y curvas. Algo así como un gráfico vectorial.
Para que nos entendamos, si defines un TPath (en su propedad Data) con algo como esto:

"M1,0 L2,1 L1,2 L0,1 L1,0 Z"

Obtendrás en pantalla esto:


Por lo tanto convertir "directamente" una imagen almacenada (una firma) a un TPath no es posible.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 25-04-2023
david.camaleon david.camaleon is offline
Miembro
 
Registrado: oct 2008
Posts: 18
Poder: 0
david.camaleon Va por buen camino
Muchas gracias por tu respuesta, Neftali.

Has entendido perfectamente la pregunta y como sospechaba no es posible.


Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Por lo que yo he entendido de la pregunta, la respuesta es NO SE PUEDE.
Entiendo que tienes una firma en un formato gráfico (JPG, PNG,...) y quieres cargar el contenifdo en un TPath. En tiendo que con TPath te refieres a la clase gráfica de FMX:
https://docwiki.embarcadero.com/Libr....Objects.TPath

TPath es una forma de representar un gráfico a partir de definir puntos, líneas y curvas. Algo así como un gráfico vectorial.
Para que nos entendamos, si defines un TPath (en su propedad Data) con algo como esto:

"M1,0 L2,1 L1,2 L0,1 L1,0 Z"

Obtendrás en pantalla esto:


Por lo tanto convertir "directamente" una imagen almacenada (una firma) a un TPath no es posible.
Responder Con Cita
  #5  
Antiguo 25-04-2023
david.camaleon david.camaleon is offline
Miembro
 
Registrado: oct 2008
Posts: 18
Poder: 0
david.camaleon Va por buen camino
Mucha gracias por tu respuesta:

No se trata de pasar un Tpah a un bitmap, si no de lo contrario.

Pero te agradezco muchísimo tu interés y la respuesta, que es perfecta para pasar un tpah a un bitmap y guardarlo en un campo de un DataSet.

De hecho estuve buscando esta solución durante algunas horas. si en vez de eso hubiera puesto la consulta aquí en el foro, me habría ahorrado mucho tiempo con tu respuesta.


Cita:
Empezado por duilioisola Ver Mensaje
En principio es la inversa de que lo que te han contestado para cargar.

Código Delphi [-]
  img := Tbitmap.Create(Trunc(Firma.Width), Trunc(Firma.Height));
  try
    img.Canvas.BeginScene;
    try
      firma.PaintTo(img.Canvas, firma.LocalRect);
    finally
      img.Canvas.EndScene;
    end;
    m := TmemoryStream.Create;
    try
      Dataset.close;     
      Dataset.open;     
      Dataset.CampoFIRMA.SavetoStream(m);
      img.LoadFromStream(m);
    finally
      FreeAndNil(m);
    end;
  finally
    FreeAndNil(img);
  end;
Responder Con Cita
  #6  
Antiguo 25-04-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por david.camaleon Ver Mensaje
Muchas gracias por tu respuesta, Neftali.
Has entendido perfectamente la pregunta y como sospechaba no es posible.
Fíjate que he dicho literalmente:
"Por lo tanto convertir "directamente" una imagen almacenada (una firma) a un TPath no es posible"

Otra cosa es lo que siempre decimos: "En informática no hay nada imposible, lo que hay que evaluar es cuanto cuesta hacerlo".

Entiendo que lo que necesitas sería algo así como utilizar un OCR, que permite reconocer un texto en formato imagen y extraer de ahí un texto como string. En tu caso tienes una imagen, que al ser una firma podemos considerar o convertir en "monocromo" y de ahí extraer un TPath. Al final es como pasar una imagen "normal" a vectorial y eso, aunque no es simple, es posible.

Me ha picado la curiosidad y he buscado un poco sobre eso y he llegado a este artículo:
http://cardhouse.com/computer/vector.htm
Que acaba utilizando este código:
http://cardhouse.com/computer/vectcode.htm

Por lo que he entendido permite convertir un TBitmap, que almacena en una matriz de 0/1 (que cuadra con lo que podría ser una firma) y lo acaba convirtiendo en una lista de vectores. No debería ser complicado, convertir esos vectores en un TPath.


Por si te interesa y quieres seguir investigando...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 26-04-2023
david.camaleon david.camaleon is offline
Miembro
 
Registrado: oct 2008
Posts: 18
Poder: 0
david.camaleon Va por buen camino
Wink

Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Fíjate que he dicho literalmente:
"Por lo tanto convertir "directamente" una imagen almacenada (una firma) a un TPath no es posible"

Otra cosa es lo que siempre decimos: "En informática no hay nada imposible, lo que hay que evaluar es cuanto cuesta hacerlo".

Entiendo que lo que necesitas sería algo así como utilizar un OCR, que permite reconocer un texto en formato imagen y extraer de ahí un texto como string. En tu caso tienes una imagen, que al ser una firma podemos considerar o convertir en "monocromo" y de ahí extraer un TPath. Al final es como pasar una imagen "normal" a vectorial y eso, aunque no es simple, es posible.

Me ha picado la curiosidad y he buscado un poco sobre eso y he llegado a este artículo:
http://cardhouse.com/computer/vector.htm
Que acaba utilizando este código:
http://cardhouse.com/computer/vectcode.htm

Por lo que he entendido permite convertir un TBitmap, que almacena en una matriz de 0/1 (que cuadra con lo que podría ser una firma) y lo acaba convirtiendo en una lista de vectores. No debería ser complicado, convertir esos vectores en un TPath.

Por si te interesa y quieres seguir investigando...
Buenos días,

Muchas gracias una vez más.

Al final opté por una solución algo más simple. Me explico:

Se trata de un formulario en FireMokey que sirve para el mantenimiento de una tabla de una base de datos, que entre otros campos almacena la firma del cliente como jpg.

1.- Cuando inserto un registro en la base de datos hago una conversión de Tpath a Bitmap y lo almaceno en un campo tipo Blob. El problema viene al tratar de modificar un registro ya existente, en cuyo caso, tengo que presentar el campo Blob almacenado como firma en el objeto tpath de un form, para que pueda ser alterado y almacenado en la base de datos. Aquí es donde hay que pasar el campo de la base de datos almacenado como jpg a tpath.

2.- Mi solución:

Apoyándome en un Timage dentro de un Trectangle, utilizo el Tpath para editar la firma y mediante un botón se almacena en el Timage. Con esto siempre uso este último objeto para intercambiar la información entre la base de datos y el formulario.

Si se trata de una modificación, al leer el registro, cargo al campo blob sobre un objeto Timage mostrando así el contenido de la firma. Si el usuario edita el objeto tpath, debe hacer clic para pasar el contenido de éste al Timage, y es este último el que almaceno en el campo de la base de datos.

Inserción : Tpath ---> Timage --> Campo BD

Modificación : Campo BD --> Timage ; si se edita el Tpath, entonces Tpath --> Timage . Siempre se graba el Timage sobre el campo de la BD.

Espero haberme explicado
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
Guardar el gráfico de un TPath en un campo Blob de un Dataset david.camaleon FireMonkey 2 22-03-2023 11:48:13
Grafico en Excel - XlCategory sin poder asignar valores javicho_villa Varios 0 26-05-2022 22:17:48
Asignar datos origen a gráfico en tiempo de ejecución g_rojo Gráficos 4 07-12-2007 02:44:19
Repintado de un objeto grafico senpiterno Gráficos 7 01-07-2004 20:25:08
Asignar en tiempo de diseño un datafield dentro de un informe melanthea C++ Builder 7 25-06-2004 19:35:35


La franja horaria es GMT +2. Ahora son las 01:38:56.


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