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 16-02-2009
betopin betopin is offline
Registrado
 
Registrado: feb 2009
Posts: 9
Poder: 0
betopin Va por buen camino
Como guardar imagenes de un PaintBox????

Cordial saludo a todos

Este es mi primer mensaje...y bueno, me estreno con una duda que francamente no he encontrado resuelta en ninguna parte por las que he navegado en el Internet...ojalá acá me puedan echar una mano

Tengo una pequeña aplicacion en donde plasmo cosas en un PaintBox. Los resultados son los esperados...y bueno...quiero guardarlos como una imagen del mismo

Para el caso, tome un SaveDialog en donde cargo todas las extensiones que se me ocurrieron...jpg, bmp, gif, etc y pues ya lo unico es salvar la imagen...sin embargo no se como!!!....supongo que debe ser alguna propiedad del canvas...o algo asi para hacerlo pero no he dado con el chiste....buscando buscando solo he encontado procedimientos para guardar la imagen como un bmp, en donde se crea el objeto y demas....pero pues esta no es la idea....y ademas solo lo he encontrado para bmp y no las demas posibilidades(gif, jpeg, etc...)....supongo que debe haber una forma mucho mas simple

De antemano muchas gracias!!!!
Responder Con Cita
  #2  
Antiguo 16-02-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola betopin bienvenido al foro, según yo podrías hacerlo de dos formas, una sería que pintes en el canvas digamos de tu TBitMap lo mismo que has hecho en el canvas del PaintBox. La otra sería utilizar el procedimiento CopyRect del canvas, con este ultimo tu código quedaría mas o menos así:

Código Delphi [-]
var
 Bitmap: TBitmap;
begin
 Bitmap := TBitmap.Create;
 Try
  With Bitmap Do
   begin
    Width:=PaintBox1.Width;
    Height:=PaintBox1.Height;
    Canvas.CopyRect(Rect(0,0,Width,Height), PaintBox1.Canvas, Rect(0,0,Width,Height));
   end;
  Bitmap.SaveToFile('C:\ImagenPaintBox.bmp');
 Finally
  Bitmap.Free;
 end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 16-02-2009
betopin betopin is offline
Registrado
 
Registrado: feb 2009
Posts: 9
Poder: 0
betopin Va por buen camino
Saludos

Yo habia elaborado un procedimiento similar al que tu propones

Código:
 
int tmpH,tmpW;
 if (SaveDialog1->Execute())
 {
  Graphics::TBitmap* bm = new Graphics::TBitmap;
  try
  {
   bm->Width = PaintBox1->Width ;
   bm->Height = PaintBox1->Height;
   tmpW = PaintBox1->Width ;
   tmpH = PaintBox1->Height;
   bm->Canvas->CopyRect(Rect(0,0,tmpW,tmpH),PaintBox1->Canvas,Rect(0,0,tmpW,tmpH);
   bm->SaveToFile(SaveDialog1->FileName);
  }
  __finally
  {
   delete bm;
  }
 }
Pero al guardar la imagen ocurren dos cosas

1) La imagen que se captura no es del paintbox sino una copia parcial de lo que en ese momento sale en pantalla y en pequeño

2) A pesar de que en el savedialog determino las extensiones que deseo con que se guarde la imagen...esta queda sin estensiones, por ende, tengo que escoger el programa con que abrir el archivo para poder ver como quedo

Estaré haciendo algo mal???

Ayuda!!!!!
Responder Con Cita
  #4  
Antiguo 17-02-2009
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 16
pablopessoa Va por buen camino
mira a mi me paso algo similar pero guardando la imagen que tenia en un Timage simulando un Paint de windows y el problema con el saveToFile es que no te va a agregar la extension, se la tenes que agregar vos, por ejemplo

ruta:='c:\fotos';
nombreImagen:='Pirulo';
extension:= '.JPG';
imagen.saveToFile (ruta+nombreImagen+extension)

demas esta decir que podes poner
image.SaveToFile (ruta+savedialog1.filename+'.jpg')
y listo!
Responder Con Cita
  #5  
Antiguo 17-02-2009
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
amigo puedes usar un directorilistbox para la ruta + un edit para el nombre y un filtercombobox para la extencion de esta forma !

Código Delphi [-]
    Canvas.CopyRect(Rect(0,0,Width,Height), PaintBox1.Canvas, Rect(0,0,Width,Height));
   end;
  //Bitmap.SaveToFile('C:\ImagenPaintBox.bmp');
  Bitmap.SaveToFile(DirectoryListBox1.GetNamePath + Edit2.Text + FilterComboBox1.Text )
 Finally
  Bitmap.Free;


DirectoryListBox1.GetNamePath es el path
edit2 es el nombre
filtercombobox es la extencion

no es muy categorico pero por lo menos guarda donde vos queres que guarde y no tenes que hacerlo por codigo ni nada por el estilo

pd : espero que te sirva saludos !
Responder Con Cita
  #6  
Antiguo 17-02-2009
betopin betopin is offline
Registrado
 
Registrado: feb 2009
Posts: 9
Poder: 0
betopin Va por buen camino
Agradezco las sugerencias de ambos aunque ya pude arreglar el problemilla del savedialog y ya me sirve directamente con el, gravandome el archivo con la extension que escojo desde este. Tenia un par de errores en su configuracion. Se las dejo por si alguien mas las quiere usar


Todas las Opciones del cuadro de Options van en false salvo las dos que se ven en la imagen

Sin embargo...sigo teniendo el problema de la captura de la imagen del paintbox

Esta linea

Código:
bm->Canvas->CopyRect(Rect(0,0,tmpW,tmpH),PaintBox1->Canvas,Rect(0,0,tmpW,tmpH)
me esta capturando es un trozo de la pantalla que en ese momento se visualiza

Alguien podria sugerirme como arreglar esto

Gracias de antemano!!!!!
Responder Con Cita
  #7  
Antiguo 17-02-2009
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 16
pablopessoa Va por buen camino
mira la verdad no soy ningun experto y como no logro darme cuenta de que es lo que puede estar saliendote mal, te muestro el codigo qeu yo uso para salvar la imagen ( yo trabajo sobre unTimage) y fijate si te sirve:

Código Delphi [-]
procedure TForm15.guardarClick(Sender: TObject);
var
    bmp:TBitmap;
begin
    bmp := TBitmap.Create;
    bmp.Width:= Image1.Width;
    bmp.Height:= Image1.Height;
    bmp.Canvas.CopyRect(Rect(0,0, bmp.Width, bmp.Height),       Image1.Canvas,Rect(0,0,Image1.Width,Image1.Height));

ojala te sirva, saludos!
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 y Visualizar Imagenes joan_mvf Gráficos 0 15-03-2007 23:59:09
Guardar Imagenes escarlete Gráficos 1 11-10-2005 18:57:47
Como Guardar una pagina web completa, con todo e imagenes teatry Internet 1 11-10-2005 16:07:15
Como arrastrar una imagen desde un panel a un paintbox maravert Gráficos 1 12-11-2004 16:42:52
Guardar Imagenes en MySQL DJ VMan MySQL 5 14-08-2003 14:27:08


La franja horaria es GMT +2. Ahora son las 21:42:07.


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