Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Problemas al guardar area cliente de mi ventana (https://www.clubdelphi.com/foros/showthread.php?t=53570)

gulder 24-02-2008 05:36:34

Problemas al guardar area cliente de mi ventana
 
Hola foro como andan espero y bien por que yo aquí rompiéndome el coco un rato jeje bueno vamos al grano.
Lo que pasa es que trato de guardar en una imagen ya sea .jpg o .bmp el área cliente de mi aplicación bueno hasta ahí todo bien, lo hago de la siguiente forma:

Código Delphi [-]
procedure TForm1.GuardarImagen1Click(Sender: TObject);
begin
  Bitmap := TBitmap.Create;
  jpeg   := TJPEGImage.Create;

        //capturo la imagen de mi form
        Bitmap.Width := ClientWidth;
        Bitmap.Height := ClientHeight;
        Bitmap.Canvas.CopyRect(ClientRect, Canvas, ClientRect);


       if SaveDialog1.Execute then
       begin
              try
                      //si el formato escogido es jpg
                      if SaveDialog1.FilterIndex =1 then begin
                        jpeg.Assign(Bitmap);
                        jpeg.CompressionQuality:=90; //25% de calidad
                        jpeg.Compress;
                        //guardamos la imagen en formato jpg
                        jpeg.SaveToFile(SaveDialog1.FileName+'.jpg');
                      end;

                      if SaveDialog1.FilterIndex =2 then begin
                       // si el formato escogido es bmp
                        Bitmap.SaveToFile(SaveDialog1.FileName+'.bmp');
                      end;
              finally
                jpeg.Free;
                Bitmap.Free;
              end;
       end;
end;


Con el código anterior la guarda bien miren la siguiente imagen;

http://img.tomatone.net/big/paramore.jpeg

El problema esta que hay veces no siempre que la imagen sale comida en uno de sus extremos miren la imagen siguiente:

http://img.tomatone.net/big/patamore2.jpeg

Pero yo creo que es por que en ese lugar tengo un MainMenu, por donde le doy la opción al usuario para guardar la imagen miren la siguiente imagen:

http://img.tomatone.net/big/paramore3.JPG

Entonces mi pregunta es como hago para que no me salga comida la imagen sin necesidad de quitar el MainMenu o hay otra forma de capturar el área cliente espero sus respuestas gracias de antemano Gulder salu2

Lepe 24-02-2008 13:51:41

Antes de tomar el área, haz esto:

Form1.Update;
Application.ProcessMessages;

Eso forzará a dibujar de nuevo la pantalla antes de tomar la instantánea.

Por cierto, me gusta tu programa, ¿es gratis? ¿reproduce los albumes?

Saludos

gulder 24-02-2008 16:54:19

Hombre Lepe gracias por tu colaboracion, probare lo que me dices y disculpa la demora me vencio el sueño, a lo referente al programa de que si es gratis hombre si y reproduce el albunes tadavia no pero tengo las ganas de que lo reprodusca salu2 Gulder

gulder 24-02-2008 17:33:12

gracias lepe si funciono eres grande papa salu2


La franja horaria es GMT +2. Ahora son las 05:01:54.

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