Einzelnen Beitrag anzeigen

mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem bei Screenshoterstellung mit Image-Kompo

  Alt 27. Jul 2006, 16:53
Ich versuche ein Screenshot mit folgendem Code zu machen:

Delphi-Quellcode:
procedure TCover.ScreenToFile(aFileName: string);
var
  Bitmap: TBitmap;
  JPG : TJPEGImage;
  Canvas: TCanvas;
begin
  Canvas := TCanvas.Create;
  try
    Canvas.Handle := GetWindowDC(0);
    Application.ProcessMessages;
    try
      Bitmap := TBitmap.Create;
      Application.ProcessMessages;
      JPG := TJPEGImage.Create;
      Bitmap.PixelFormat:=pf32bit;
       Application.ProcessMessages;
      try
        Bitmap.Width := Screen.DesktopWidth;
        Bitmap.Height:= Screen.DesktopHeight;
        Bitmap.PixelFormat := pfDevice;
         Application.ProcessMessages;
        BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Screen.DesktopWidth), Pred(
        Screen.DesktopHeight), Canvas.Handle, Screen.DesktopLeft,
        Screen.DesktopTop, Bitmap.Canvas.CopyMode);
        Application.ProcessMessages;
//Kompression
        JPG.CompressionQuality:=50;
        JPG.Assign(Bitmap);
        Application.ProcessMessages;
        if fileexists(aFileName) then
          deletefile(aFileName);
        JPG.SaveToFile(aFileName);
      finally
//Größe
       //resizepictur(aFileName,300,300);
        Bitmap.Free;
        JPG.Free;
      end;
    finally
      ReleaseDC(0, Canvas.Handle);
      Application.ProcessMessages;
    end;
  finally
    Canvas.Free;
  end;
end;
Der Aufruf:

Delphi-Quellcode:
procedure TCover.JvTransparentButton1Click(Sender: TObject);
begin
 ScreenToFile('Screen1.jpg');
end;
Die in einer Image-Kompo zur Laufzeit über OpenPictureDialog geladenen Bilder werden einfach ignoriert. Lege ich ein Bild zur Entwurfszeit fest, funktioniert alles wunderbar.

Wo könnte der Haken sein?
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat