• Sábado 21 de Diciembre de 2024, 16:13

Autor Tema:  Re: Como Guardar Graficos en Base de Datos  (Leído 3886 veces)

anamercy

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Como Guardar Graficos en Base de Datos
« en: Miércoles 10 de Septiembre de 2003, 16:57 »
0
Hola, necesito saber como puedo guardar y cargar  un grafico

dibujado en un picture box a una base de datos. En el picture

box hago dibujos de varias lineas, cuadros, puntos y circulos

con el método MouseUp del picture box, ademas contiene una

imagen jpg de fondo que es sobre la que se hacen todos los

graficos. La imagen se guarda y carga exitosamente en la base de

datos con los metodos AppendChunk y GetChunk pero no me guarda

todos los trazos hechos en la Base de Datos.....Como puedo hacer

esto?.Les agradecere mucho su ayuda.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Como Guardar Graficos en Base de Datos
« Respuesta #1 en: Jueves 11 de Septiembre de 2003, 13:23 »
0
Hola anamercy.

Por mucho que utilices métodos gráficos en un control PictureBox no vas a conseguir que esos cambios se reflejen en el archivo o datos desde los que has cargado una imagen. La solución pasaría por usar algún control de edición de imagen ,o por utilizar apis para crear un bitmap que pudieras guardar (me gustaría ver cómo se hace) o por guardar tú misma los cambios abriendo el archivo en binario (o los datos binarios del campo de la bd) y escribiendo la imagen modificada, claro que esta última opción no es nada sencilla dada la multitud de formatos de imágenes, compresiones, y otras zarandajas que te puedes encontrar y debes conocer para guardar la imagen de forma correcta.

En fin, si no usas wXp, una solución sencilla es usar el ocx ImageEdit (lo de wXp es porque en Xp este control no se incluye con el SO).

Suerte.

anamercy

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Como Guardar Graficos en Base de Datos
« Respuesta #2 en: Jueves 11 de Septiembre de 2003, 21:44 »
0
Hola, lei tu respuesta y te agradezco mucho por la informacion. Realmente suena demasiado complicado y me llevaria mucho tiempo investigarlo y probarlo, ya que no soy experta en visual basic. Ademas estoy con sistema operativo Xp y no funcionaria.....He optado por almacenar coordenadas de los graficos en la base de datos. Talvez podrias sugerirme alguna forma de hacer esto mas eficiente. Te lo agradecere mucho.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Como Guardar Graficos en Base de Datos
« Respuesta #3 en: Viernes 12 de Septiembre de 2003, 09:18 »
0
Hola de nuevo anamercy.

Creo que se me ha ocurrido una forma de guardar la imagen del picturebox con las modificaciones que hayas hecho, y es a través del objeto Clipboard.
Fíjate en el ejemplo que carga una imagen llamada pba.bmp en un picturebox, le dibuja un par de líneas y guarda la imagen con los cambios. Muy importante: la propiedad AutoRedraw del pictureBox tiene que ser True.

***************************

    Picture1.Picture = LoadPicture("c:Rutapba.bmp")
    Picture1.Line (0, 0)-(Picture1.Width, Picture1.Height)
    Picture1.Line (0, Picture1.Height)-(Picture1.Width, 0)
    Clipboard.Clear
    Clipboard.SetData Picture1.Image, vbCFDIB
    SavePicture Clipboard.GetData, "C:Rutapba.bmp"

***************************************
Espero que puedas adaptar esta idea para solucionar tu problema.
Suerte.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Como Guardar Graficos en Base de Datos
« Respuesta #4 en: Viernes 12 de Septiembre de 2003, 13:40 »
0
Hola de nuevo.

Poco a poco voy cayendo de la burra. Me acabo de dar cuenta de por qué no funcionaba la instrucción SavePicture. Prueba de esta forma y verás:

SavePicture Picture1.Image, "C:RutaArchivo.Bmp"

¡Estaba utilizando la propiedad 'Picture' del PictureBox en vez de utilizar la propiedad 'Image'! Si seré...

Suerte.

acalanto

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
Re: Como Guardar Graficos en Base de Datos
« Respuesta #5 en: Viernes 12 de Septiembre de 2003, 17:12 »
0
No se si lo que te comento te puede ayudar.

Omito como guardar una imagen en una línea o registro de la base de datos ya que según dices esto lo hace bien.

Creo que puedes insertar un campo más en la tabla o fichero tipo MEMO sobre el que puedes actualizar todo aquello que has escrito o dibujado sobre la imagen, es decir, en un campo tienes el mapa de bits y en otro los comandos P ej.

Linea[10,20,40,60]
Texto[100,200,'Texto en imagen']
icono[50,30,c:iconoscamión.ico]

y así sucesivamente todo lo que se te ocurra.

Tendrás que implementar un intérprete de comandos que haga posible transformaar estos mandatos en lineas, textos, circulos, sopots etcetc sonbre la imagen, no se algo parecido a esto.


Public Sub Blinker(pictObject as object, macro as string)

dim comandos as variant
comandos=split(macro,";")

dim i as long
for i=lbound(comandos,1) to ubound(comandos,1)

select case lcase(left(comandos,instr(comandos,"[")-1)

case "linea"
'extraer las coordenadas de la línea de los corchetes y dibujarla a escala sobre la imagen
case "texto"
'idem texto
case "icono"
idem icono
end select


Desde luego el desarrollo es más complejo de lo que te escribo ya que si además quieres medir con la precisión de la foto deberás obligatoriamente de realizar un giro, traslación y homotecia de las coordenadas del panel, pero por aquí seguramente van los tiros....

Un saludo
-acalanto-

end sub

anamercy

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Como Guardar Graficos en Base de Datos
« Respuesta #6 en: Viernes 12 de Septiembre de 2003, 17:29 »
0
Hola Brroz. Muchas gracias por tu ayuda. Fijate que ya probe todo lo anterior que me dices y lo que me ha funcionado hasta ahora es el Picture.Image que ya probe copiandolo en otro picture y lo hace bien. El problema real lo tengo al momento de guardar este picture (utilizo Access campo memo OLE y metodo Appendchunck) el archivo me genera un numero binario demasiado grande (mas grande que Double) y se me truncan los datos aun cambiando el tipo. Por el momento estoy guardando coordenadas en una tabla adicional y me ha funcionado pero es un proceso demasiado largo y tedioso. Si alguien conoce alguna mejora del metodo Appenchunk y Getchunck para tipos de datos grandes, agradecere mucho su ayuda.

Antonio S

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Como Guardar Graficos en Base de Datos
« Respuesta #7 en: Sábado 13 de Septiembre de 2003, 04:32 »
0
Hola Anamercy,

Si guardas exitosamente la imagen de fondo que tienes en el PictureBox con el metodo AppendChunk, no deberías tener problemas para guardar los dibujos que hagas en el PictureBox. Lo único que tienes que hacer es cargar esos dibujos en el PictureBox antes de guadarlo en la base de datos. Es decir:

Picture1.Picture = Picture1.Image

La propiedad AutoRedraw del Picture1 deberá estar a True.

También puedes mirar la página del Guille al respecto:

http://guille.costasol.net/ejemplos/bases_imagenes.htm


Un saludo,