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 28-05-2004
Jessica666 Jessica666 is offline
Miembro
 
Registrado: may 2004
Posts: 13
Poder: 0
Jessica666 Va por buen camino
Crear componente Image en tiempo d Ejecucion

Hola a todos y gracias por la colaboracion que puedan prestarme.

Necesito saber como puedo hacer para crear un componente Image y cargar una imagen o bitmap en el, en tiempo de ejecucion, lo que pasa es que estoy conviertiendo un video en bitmaps pero tengo que mostrar cada uno de los bitmaps por separado en un Image diferente entonces necesito crear uno por cada bitmap que me vaya creando la conversion(Video a Bimaps).

Agradezco cualquier colaboracion ya que no se mucho del Tema.

Atte:
Una Jessica Confundida
Responder Con Cita
  #2  
Antiguo 28-05-2004
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Código:
var vImagen: TImage;

 if not OpenDialog1.Execute then
   exit;

vImagen:=TImage.Create(Self);
vImagen.Picture.LoadFromFile(OpenDialog1.FileName);
         {Cargas la imagen del archivo que escojas con el OpenDialog}

{Configuras las demas propiedades}

vImagen.top:= ...  
vImagen.Left:= ...

{etc}

vImagen.Parent:=Self; 
         {Le dices que el obejto que lo contiene es el formulario actual}
si en lugar de cargar la imagen de un archivo quisieras copiarla de alguna variable que tuvieras por ahi... por ejemplo en otro Timage, entonces:

Código:
  vImagen.Picture.Assign(image1.picture);
O si lo tuvieses en una variable de tipo TBitmap:

Código:
  vImagen.Picture.bitmap.Assign(VariableBMP);
Responder Con Cita
  #3  
Antiguo 29-05-2004
Jessica666 Jessica666 is offline
Miembro
 
Registrado: may 2004
Posts: 13
Poder: 0
Jessica666 Va por buen camino
Unhappy Crear componente Image en time de ejecucion

Gracias por la colaboracion Bebe gatosoft

Resulta que ingreso lo que tu me envias y me saca un error de declaracion del image y ya lo tengo declarado, te voy ha enviar un peazo del codigo que me convierte el video en los bitmaps, y tu lo revisas, bueno si puedes, te lo agardeceria en el alma, ese codigo si tu lo corres, veras que toma un video y lo convierte en frames de bitmaps, lo que necesito es que cada uno de esos bitmaps me lo despliegue en un tImage diferente, ese el el gallo.

procedure TFrmVisualizarKVNN.BitBtn5Click(Sender: TObject);
var
Bitmap: TBitmap;
i : integer;
begin
begin
for i := 1 to MediaPlayer1.Length do
begin
Edit3.Text := IntToStr(i);
MediaPlayer1.StartPos := i;
MediaPlayer1.EndPos := i;
MediaPlayer1.Play;
Bitmap := TBitmap.Create;
Try
Bitmap.Width := Panel1.Width;
Bitmap.Height := Panel1.Height;
Bitmap.PixelFormat := pf24bit;
Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect,
FrmvisualizarKVNN.Canvas,
Rect(Panel1.Left,
Panel1.Top,
Panel1.Left + Bitmap.Width,
Panel1.Top + Bitmap.Height));
Image1.Picture.Bitmap := Bitmap;
Bitmap.SaveToFile(IntToStr(i) + '.BMP'); //CLAVE
finally
Bitmap.Free
end;
Sleep (250); //250
Application.ProcessMessages
end
end
end;

Por favor cualquier ayuda, es que en realidad no se mucho de tratamiento de imagenes y videos...

Responder Con Cita
  #4  
Antiguo 29-05-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Recuerda usar las etiqueta [ Delphi ] y [ / Delphi ] (sin espacios ) cuando vayas a escribir código en Delphi. Tampoco estaría de más que intentases identar el código.

Lo idento y pongo yo las etiquetas para que el que quiera responder vea más claro el código.

Código Delphi [-]
procedure TFrmVisualizarKVNN.BitBtn5Click(Sender: TObject);
 var
   Bitmap: TBitmap;
   i : integer;
 begin
//begin , aquí hay dos begin y no se a que vienen...
   for i := 1 to MediaPlayer1.Length do
     begin
       Edit3.Text := IntToStr(i);
       MediaPlayer1.StartPos := i;
       MediaPlayer1.EndPos := i;
       MediaPlayer1.Play;
       Bitmap := TBitmap.Create;
     Try
       Bitmap.Width := Panel1.Width;
       Bitmap.Height := Panel1.Height;
       Bitmap.PixelFormat := pf24bit;
       Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect,
       FrmvisualizarKVNN.Canvas,
       Rect(Panel1.Left,
           Panel1.Top,
           Panel1.Left + Bitmap.Width,
           Panel1.Top + Bitmap.Height));
       Image1.Picture.Bitmap := Bitmap;
       Bitmap.SaveToFile(IntToStr(i) + '.BMP'); //CLAVE
     finally
       Bitmap.Free
     end;
 Sleep (250); //250
 Application.ProcessMessages
 end
//end ¿¿y este otro end??
end;

Había partes que al identar me han sonado rara, los he puesto como comentarios, por si son necesarias pero yo no alcanzo para comprender su porqué.
__________________
:)
Responder Con Cita
  #5  
Antiguo 29-05-2004
Jessica666 Jessica666 is offline
Miembro
 
Registrado: may 2004
Posts: 13
Poder: 0
Jessica666 Va por buen camino
Crear Componente en tiempo de ejecucion 3

Muchas gracias por la aclaracion de las etiquetas y por lo de la indentada, la verdad es que todo mi codigo esta indentado pero al copiar y pegar sin usar las etiquetas quedo asi de horrible, pero no creas que soy tan desordenada como para tener un codigo, completamente apartir de la linea inicial, si ese fuera mi nivel ni siquiera estaba en un foro delphi, ahh y si, es un solo Begin es solo que antes estaba tratando de hacer algo y por eso inclui otro begin y otro end por supuesto....

Muchas gracias en verdad ppor las correcciones y por publicarme de nuevo el codigo.

Ahora ya aclarado todo me gustaria saber si puedes ayudarme....


Por favor
Responder Con Cita
  #6  
Antiguo 29-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola.

Si ya has entendido como crear un TImage en tiempo de ejecución, lo único que está pendiente es añadir el código necesario en lugar de la asignación que haces ahora al único TImage disponible.

Donde dice image1.Picture.Bitmap := Bitmap;

Además, podes quitar la línea SaveToFile si no te interesa guardarlo a un archivo bmp.

Intentalo por vos misma, y volve aqui con dudas mas puntuales.

Hasta luego y que te vaya bien...

Responder Con Cita
  #7  
Antiguo 30-05-2004
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Wink

Hola Jessica, revisé tu codigo y no me dio ningun error.

Abri un nuevo proyecto, puse un Tpanel, un Tedit, un TMediaPalyer y un TIMAGE.

Lo ejecute y me generó como 300 archivos bmp. (afortunadamente era un clip de video.)

Dices que el error que te sale tiene que ver con la declaracion del ¿TImage?, supongo entonces que no tienes un componente TImage dentro de tu formulario sino que lo declaraste como variable.

y no veo donde lo creas.
entonces modifiqué tu codigo , dejando en el formulario el panel, el mediaplayer y el edit y declarando el Timage como una variable, asi:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap:  TBitmap;
i     :  integer;
vImagen:TImage;
begin
vImagen:=TImage.Create(Self);
      for i := 1 to MediaPlayer1.Length do
       begin
          Edit3.Text := IntToStr(i);
          MediaPlayer1.StartPos := i;
          MediaPlayer1.EndPos   := i;
          MediaPlayer1.Play;
          Bitmap := TBitmap.Create;
       Try
         Bitmap.Width  := Panel1.Width;
         Bitmap.Height := Panel1.Height;
         Bitmap.PixelFormat := pf24bit;
         Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect,
                             Self.Canvas,
                             Rect(Panel1.Left,
                                  Panel1.Top,
                                  Panel1.Left + Bitmap.Width,
                                  Panel1.Top  + Bitmap.Height));
         vImagen.Picture.Bitmap := Bitmap;
         Bitmap.SaveToFile(IntToStr(i) + '.BMP');//CLAVE
       finally
              Bitmap.Free
       end;
       Sleep (250);  //250
       Application.ProcessMessages;
   end;
vImagen.Free;
end;

Revisa y me cuentas.
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


La franja horaria es GMT +2. Ahora son las 16:17:50.


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