Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Screenshot immer nur weiß (https://www.delphipraxis.net/39990-screenshot-immer-nur-weiss.html)

Sascha L 9. Feb 2005 21:15


Screenshot immer nur weiß
 
Hallo,

mein Programm ist minimiert im Systray und soll einen Screenshot machen, aber das Bild ist immer nur weiß.

Ich benutze folgende Prozedur:

Delphi-Quellcode:
procedure MakeScreenShot(const ATarget: TBitmap);
var DesktopDC: HDC;
begin
DesktopDC := CreateDC('DISPLAY', nil, nil, nil); // habe auch schon GetWindowDC(0) versucht
  try
  ATarget.PixelFormat := pfDevice;
  ATarget.Width := Form1.Width;
  ATarget.Height := Form1.Height;
  BitBlt(ATarget.Canvas.Handle, Form1.Left, Form1.Top, Form1.Width, Form1.Height, DesktopDC, 0, 0, SRCCOPY);
  finally
  DeleteDC(DesktopDC);
  end;
  end;
Wenn ich eine "normale" Anwendung habe, welche nicht im Systray ist, geht alles einwandfrei. :gruebel:

Rastaman 9. Feb 2005 21:21

Re: Screenshot immer nur weiß
 
Versuchs mal so.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Canvas: TCanvas;
  Bitmap: TBitmap;
begin
  Canvas := TCanvas.Create;
  try
    Canvas.Handle := GetWindowDC(0);
    try
      Bitmap := TBitmap.Create;
      try
        Bitmap.Height := Screen.Height;
        Bitmap.Width := Screen.Width;

        BitBlt(Bitmap.Canvas.Handle,0,0,
               Screen.Width,
               Screen.Height,
               Canvas.Handle, 0, 0,
               Bitmap.Canvas.CopyMode);
        Bitmap.SaveToFile('C:\Hallo.bmp');
      finally
      Bitmap.Free;
      end;
    finally
    ReleaseDC(0, Canvas.Handle);
    end;
  finally
  Canvas.Free;
  end;
end;

sniper_w 9. Feb 2005 21:22

Re: Screenshot immer nur weiß
 
Delphi-Quellcode:
 var a:hdc;
begin

 a := GetWindowDC(GetDesktopWindow);
 BitBlt(Canvas.Handle,0,0,width,height,a,0,0,SRCCOPY);

end;
so geht das :???:

Sascha L 9. Feb 2005 22:05

Re: Screenshot immer nur weiß
 
@sniper: das ist derselbe Code wie meiner und der funktioniert nicht.

@gerrit89: Danke! Dein Code funktioniert, nur habe ich nun ein Problem mit Snipers Code (http://www.delphipraxis.net/internal...ct.php?t=46669)

Ich bekomme hier einen Fehler (Zugriffsverletzung in der ntdll.dll):

Delphi-Quellcode:
Tree := AddNode(Tree,Bitmap2.Canvas.Pixels[x,y]);
Gruß
Sascha

sniper_w 9. Feb 2005 22:09

Re: Screenshot immer nur weiß
 
Zitat:

@sniper: das ist derselbe Code wie meiner und der funktioniert nicht.
Bei mir schon (erste genauso wie der zweite Beispiel mit Tree). Ich überprüfe mein Code bevor ich es poste. :corky:

Sascha L 9. Feb 2005 22:12

Re: Screenshot immer nur weiß
 
Hast du beachtet, dass mein Programm minimiert im SysTray ist?

Wenn es maximiert ist, dann funnktioniert der Code, aber wenn das Programm im Hintergrund läuft, dann geht es nicht.

Rastaman 10. Feb 2005 11:39

Re: Screenshot immer nur weiß
 
Aber ich glaube wenn du in deinen code nach bitblt einfach Folgendes einfügst :
Delphi-Quellcode:
ATarget.SaveToFile('C:\Hallo.bmp');
Dann müsste der genau so funktionieren oder :gruebel:

sniper_w 10. Feb 2005 12:07

Re: Screenshot immer nur weiß
 
Zitat:

Aber ich glaube wenn du in deinen code nach bitblt einfach Folgendes einfügst :
Quellcode: markieren
ATarget.SaveToFile('C:\Hallo.bmp');


Dann müsste der genau so funktionieren oder
Ich denke auch....

Sascha L 10. Feb 2005 14:09

Re: Screenshot immer nur weiß
 
ja tut er ja auch, wie gesagt, nur funktioniert das ganze mit dem code von sniper nicht mehr, aber beides muss harmonieren, sonst bekomme ich ja nicht die am häufigsten auftretende farbe.

sniper_w 10. Feb 2005 14:19

Re: Screenshot immer nur weiß
 
Das Code funct. nur leide beim ersten Durchlauf, d.h. man kann es nur einmal feststellen im laufe des "Programlebens" welche farbe ist die am häufigsten vorgekommene....
Das liege daran das Tree variable und alle Child Links gelöscht werden müssen, und zum ersten Mal sind sie auch "leer"(nil).
Ich versuche "TREE" noch immer zu löschen... :wall: :firejump:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr.
Seite 1 von 2  1 2      

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