Thema: Delphi screenshot als jpeg

Einzelnen Beitrag anzeigen

ShoAn

Registriert seit: 27. Apr 2003
Ort: wetzlar
7 Beiträge
 
Delphi 6 Personal
 
#9
  Alt 28. Apr 2003, 15:13
@RobertS: hehe, ich habn k6 2 300mhz ;)

also jetzt geht eigentlich alles ganz gut. ich hab noch nebenbei reingemacht, dass man die größe von dem bild verändern kann:

Delphi-Quellcode:
procedure aScreenShot(const aFileName: String; Quality, Width, Height : Integer);
var
  aDC : hDC;
  aBmp : TBitmap;
  aJpg : TJPEGImage;
  mh, hBmp : THandle;

begin
  ajpg := TJPEGImage.Create;
  aBmp := TBitmap.Create;
  aBmp.Width := Screen.DesktopWidth;
  aBmp.Height := Screen.DesktopHeight;
  aDC := GetDC(0);
  hBmp := CreateCompatibleBitmap(aDC, Screen.Width, Screen.Height);
  mh := SelectObject(aDC, hBmp);

  try
    BitBlt(aBmp.Canvas.Handle, 0, 0, aBmp.Width, aBmp.Height, aDC, 0, 0, SRCCopy);

    ajpg.Assign(aBmp);

    aBmp.Width := Width;
    aBmp.Height := Height;
    aBmp.Canvas.StretchDraw(Rect(0, 0, aBmp.Width, aBmp.Height), ajpg);

    ajpg.assign(aBmp);
    ajpg.CompressionQuality := Quality;
    ajpg.Compress();
    ajpg.SaveToFile(aFileName);
  finally
    ajpg.Free;
    aBmp.Free;
    SelectObject(aDC, mh);
    DeleteObject(hBmp);
    ReleaseDC(0, aDC);
  end;
end;
kann mal jemand schnell trübergucken, ob das auch so performance-mäßig ok ist? weil, wenn ich jetzt auf den button klicke, bleibt meine maus sogar für knapp eine sekunde hängen ;) naja, vielleicht liegts auch an meiner alten krück ;)
nicht alles, was nass ist, kann fliegen
  Mit Zitat antworten Zitat