AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildschirmfoto knipst nicht alles
Thema durchsuchen
Ansicht
Themen-Optionen

Bildschirmfoto knipst nicht alles

Ein Thema von KodeZwerg · begonnen am 29. Mai 2018 · letzter Beitrag vom 4. Jun 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 08:26
Och menno, Ok, Danke auf jeden fall für die korrekte heran gehens weise, ich versuche es so wie Du es beschreibst umzusetzen.

edit
Ich habe gerade dein update mit Bild gesehen, da ist doch auch Desktop Hintergrund, das meinte ich mit rausfiltern bei obiger Aussage.
Gruß vom KodeZwerg

Geändert von KodeZwerg (30. Mai 2018 um 08:28 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 08:34
Och menno, Ok, Danke auf jeden fall für die korrekte heran gehens weise, ich versuche es so wie Du es beschreibst umzusetzen.

edit
Ich habe gerade dein update mit Bild gesehen, da ist doch auch Desktop Hintergrund, das meinte ich mit rausfiltern bei obiger Aussage.
OK dies Antwort noch.
Dann hole dir doch direkt das Bitmap vom DC was gibt es da raus zu filtern.
Habe dir doch gezeigt wie es geht.
HBitmap(GetCurrentObject(DC, OBJ_BITMAP));
Aber ehrlich? Frage mich was es dir bringen soll ob ich nun den Hintergrund des Desktop im Bereich von OTTB sehe
oder aber nachher anstelle dessen einen weißen\schwarzen oder was auch immer Hintergrund habe ist gehüpft wie gesprungen.

Das einzige was du dann noch machen könntest das Bild als PNG kopieren und den schwarzen\weißen Hintergrund dann ausschneidest.
Aber das ist wieder höhere Mathematik

gruss

Geändert von EWeiss (30. Mai 2018 um 08:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 08:45
Habe dir doch gezeigt wie es geht.HBitmap(GetCurrentObject(DC, OBJ_BITMAP));
Ja ich bin da noch nicht so fit, bedankt habe ich mich bereits und versuche es umzusetzen. Für Dich ist das alles so selbstverständlich weil Du so tief in der Materie drinnen steckst, ich muss das alles nun Sinnvoll umsetzen und natürlich hier und da MSDN lesen wie/womit/ausgabe etc ich aufrufe damit am Ende das rauskommt was ich wollte, ein Bild vom Fenster mit egal was für Content. Du hast ja heran gehens weise nun sehr deutlich beschrieben, ich bin dabei.
Danke nochmals!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 09:57
emm


BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY);

BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY or CAPTUREBLT);
mit

Delphi-Quellcode:
Const
   CAPTUREBLT = $40000000;
Grüsse Mavarik
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 10:13
emm


BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY);

BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY or CAPTUREBLT);
mit

Delphi-Quellcode:
Const
   CAPTUREBLT = $40000000;
Grüsse Mavarik
Zitat:
Includes any windows that are layered on top of your window in the resulting image. By default, the image only contains your window. Note that this generally cannot be used for printing device contexts.
Kann da keinen besonderen Vorteil drin erkennen.
Habe ich noch nie verwendet.

https://stackoverflow.com/questions/...y-of-the-targe
Denke das kann man getrost weglassen.

gruss

Geändert von EWeiss (30. Mai 2018 um 10:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 10:32
Kann da keinen besonderen Vorteil drin erkennen.
Habe ich noch nie verwendet.
Denke das kann man getrost weglassen.
Bei einem "Foto" des eigenen Fensters ggf. ja, aber wenn man z.B. die Gadgets vom Vista-Bildschirm auch im Image haben möchte, geht es nicht ohne...

Keine Ahnung ob das auch für andere Inhalte gilt, hab ich noch nicht getestet.

Mavarik
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 10:35
Kann da keinen besonderen Vorteil drin erkennen.
Habe ich noch nie verwendet.
Denke das kann man getrost weglassen.
Bei einem "Foto" des eigenen Fensters ggf. ja, aber wenn man z.B. die Gadgets vom Vista-Bildschirm auch im Image haben möchte, geht es nicht ohne...

Keine Ahnung ob das auch für andere Inhalte gilt, hab ich noch nicht getestet.

Mavarik
Ja das habe ich gelesen wenn es um Sprite auf dem Window geht (Widget)
Aber bei mir werden die auch ohne diese Flag aufgenommen.. siehe Shot.

Nun gut versuchen kann er es ja mal.. Nachteile wird er dadurch nicht habe.
Danke!

gruss

Geändert von EWeiss (11. Jul 2019 um 15:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 11:43
BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY or CAPTUREBLT);
Das bewirkt leider keinen Unterschied, Layered knipsen = schwarzes Bild, Danke trotzdem Mavarik!
Ich habe gerade neu gestartet und wenn fertig gebe ich bescheid oder pump es in Mitglieder Projekte.
So in etwa wird die GUI aussehen Screenshot - 30_05.jpg
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 22:19
@Emil, nun hab ich mal Dein Text für Delphi angepasst, funktioniert für ganzes Display mit egal was für Content. Danke
Jetzt taste ich mich an Deine zweite Variante ran.
Delphi-Quellcode:
Function CaptureScreen(var hbmp: HBITMAP): Boolean;
var
  hDCScreen, hDCMem : HDC;
  cx, cy: Integer;
  hBmpOld: HBITMAP;
  dwRop: DWORD;
begin
  hDCScreen := CreateDC('DISPLAY', 0, 0, 0);
  cx := GetDeviceCaps(hDCScreen, HORZRES);
  cy := GetDeviceCaps(hDCScreen, VERTRES);
  hDCMem := CreateCompatibleDC(hDCScreen);
  hbmp := CreateCompatibleBitmap(hDCScreen, cx, cy);
  hBmpOld := SelectObject(hDCMem, hbmp);
  dwRop := SRCCOPY or CAPTUREBLT;
  Result := BitBlt(hDCMem, 0, 0, cx, cy, hDCScreen, 0, 0, dwRop);
  SelectObject(hDCMem, hBmpOld);
  DeleteDC(hDCMem);
  DeleteDC(hDCScreen);
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Bildschirmfoto knipst nicht alles

  Alt 31. Mai 2018, 07:41
Sieht doch gut aus..
Warum hast du aber kein ReleaseDC genommen?

gruss

Geändert von EWeiss (31. Mai 2018 um 09:08 Uhr)
  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 08:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz