AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

kleine Frage zum screenshot machen

Ein Thema von cRayZo · begonnen am 6. Sep 2007 · letzter Beitrag vom 6. Sep 2007
Antwort Antwort
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#1

kleine Frage zum screenshot machen

  Alt 6. Sep 2007, 20:38
hi ne kleine Frage^^

wieso geht

MakeScreenShot(Image1.Picture.Bitmap); aber das hier nicht?
Delphi-Quellcode:
Var
Varscreen:TBitmap;
begin
MakeScreenShot(Varscreen);
Image1.Picture.Bitmap:=Varscreen;
(mit dem procedure)
Delphi-Quellcode:
procedure MakeScreenShot(const ATarget: TBitmap);
var
  DesktopDC: HDC;
begin
  DesktopDC := CreateDC('DISPLAY', nil, nil, nil);
  try
    ATarget.PixelFormat := pfDevice;
    ATarget.Width := Screen.Width;
    ATarget.Height := Screen.Height;

    BitBlt(ATarget.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DesktopDC, 0, 0, SRCCOPY);
  finally
    DeleteDC(DesktopDC);
  end;
end;
das versteh ich nciht das ist doch das Gleiche??

ich möchte den screenshot in eine Variable speichern, wie soll das denn anders gehen, wenn nicht da wie oben?
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: kleine Frage zum screenshot machen

  Alt 6. Sep 2007, 20:42
hast du Varscreen creiert?

Gruß Alexander
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: kleine Frage zum screenshot machen

  Alt 6. Sep 2007, 20:42
Weil du dein VarBitmap erstmal Createn musst Und dann nicht einfach den Pointer zuweisen, sondern Image.Picture.Assign(VarBitmap) ..
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#4

Re: kleine Frage zum screenshot machen

  Alt 6. Sep 2007, 20:47
meinst du so?

Delphi-Quellcode:
Var
Varscreen:TBitmap;
begin
varscreen.Create;
Image1.Picture.Assign(Varscreen);
MakeScreenShot(Varscreen);
Image1.Picture.Bitmap:=Varscreen;
end;
das ändert nichts, krieg trotzdem einen error..

hab ich was falsch verstanden (wohl eher sehr warscheinlich^^)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: kleine Frage zum screenshot machen

  Alt 6. Sep 2007, 20:48
varscreen := TBitmap.Create;
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: kleine Frage zum screenshot machen

  Alt 6. Sep 2007, 20:51
und noch was: assign nachher und diese Zuweisung mit := bei Instanzen von Klassen ist immer problematisch, da man sich im klaren sein muss, dass man NUR die Pointer auf die Instanzen verschiebt, und es so vorkommen kann, dass plötzlich kein Pointer auf die eine oder andere Instanz zeigt und so Speicherlecks entstehen können.
Delphi-Quellcode:
Var
Varscreen:TBitmap;
begin
varscreen := TBitmap.Create;
MakeScreenShot(Varscreen);
Image1.Picture.Assign(Varscreen);
end;
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: kleine Frage zum screenshot machen

  Alt 6. Sep 2007, 20:52
Und nicht Image.Picture.Bitmap:=Varscreen; sondern

Image1.Picture.Bitmap.Assign(varscreen);
Sonst weist du nur den Pointer zu und sobald du varscreen wieder freigibst, was du machen musst!!!!, dann ist auch kein bild mehr zu sehen.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: kleine Frage zum screenshot machen

  Alt 6. Sep 2007, 20:54
Müsste es eigentlich nicht

procedure MakeScreenShot(var ATarget: TBitmap); heißen?
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: kleine Frage zum screenshot machen

  Alt 6. Sep 2007, 20:55
glaube nicht. (Auch nicht ganz sicher) ATarget ist ja eine Instanz einer Klasse und somit kann es mit const übergeben werden.

Gruß Alexander
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: kleine Frage zum screenshot machen

  Alt 6. Sep 2007, 20:58
An cRayZo: Lies di mal das Durch:
http://dsdt.info/grundlagen/sprache/oo2.php

und hier gibt es noch viel mehr:
http://de.wikibooks.org/wiki/Program...ltsverzeichnis

Gruß Alexander
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  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 13:43 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