AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Sreenshot von transparenten Formularen
Thema durchsuchen
Ansicht
Themen-Optionen

Sreenshot von transparenten Formularen

Ein Thema von mlspider · begonnen am 29. Jun 2006 · letzter Beitrag vom 29. Jun 2006
Antwort Antwort
mlspider

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

Sreenshot von transparenten Formularen

  Alt 29. Jun 2006, 11:53
Hallo,

mein kleines Programm beinhaltet ein Formular, dass die Eigenschaft TransparentColor den Zustand Wahr hat. Nun möchte ich ein Schnappschuß des eben genannten machen.

Delphi-Quellcode:
procedure TForm1.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:=pf8bit;
       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;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ScreenToFile('Screen1.jpg');
end;
Lichtet mir nur den Desktop ab. Das Form leider nicht.
Mario
Handbücher haben einen hohen Heizwert!!!

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

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Sreenshot von transparenten Formularen

  Alt 29. Jun 2006, 15:02
Hallo,

ich weiß zwar nicht, warum Dein Fenster nicht angezeigt wird, habe aber ein paar Anmerkungen zum Quelltext:
  • Du verwendest in dem kurzen Stück 7(!) mal Application.ProcessMessages. Wozu?
  • Du legst ein TCanvas-Objekt an, ohne es zu verwenden oder überhaupt zu benötigen
  • Du stellst erst das Pixelformat ein, um es nach der Größenanpassung wieder zu ändern. Am Besten ist folgende Reihenfolge: 1. Pixelformat, 2. Bildbreite, 3. Bildhöhe. Wobei die Reihenfolge von 2. und 3. nur etwas bringt, wenn der Speichermanager mitspielt.
Gruß
xaromz
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz