AGB  ·  Datenschutz  ·  Impressum  







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

Screenshot Frage

Ein Thema von Schuby · begonnen am 5. Aug 2025 · letzter Beitrag vom 6. Aug 2025
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
10.064 Beiträge
 
Delphi 12 Athens
 
#11

AW: Screenshot Frage

  Alt 5. Aug 2025, 15:01
Wie sieht denn dein aktueller Code aus? Du müsstest ja nun eine zweite TRect Variable haben. Und wenn du den Ausschnitt im Ziel direkt links oben haben möchtest, sieht das für einen 50x100 Pixel großen Ausschnitt z.B. so aus:
Delphi-Quellcode:
var
  TargetRect: TRect;
begin
  TargetRect := Rect(0, 0, 50, 100);
  ...
  Bild.Canvas.CopyRect(TargetRect, c, r);
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
119 Beiträge
 
#12

AW: Screenshot Frage

  Alt 5. Aug 2025, 17:06
Hallo zusammen, ok jetzt muss ich mal ausholen damit ihr versteht was ich machen will.
Ich spiele ein Spiel und habe mehrere Accounts, wenn ich ein spezielles Item suche muss
ich jeden acc einloggen um nach zu schauen wo es ist. Deswegen mache ich von jeden acc
ein Screenshot nur vom Inventar(4mal) und Lager(3mal), speichere dieses Bild in die Datenbank ab.

Dazu ziehe ich mein Inventar oben links in die Ecke und mache ein Screen. Das klappt super.
Besser wäre es aber wenn ich auf Inventar klicke und es bleibt rechts unten in der ecke
und ich muss es nicht verschieben.

Das ist zur Zeit mein Code.

Delphi-Quellcode:

//******************************************************************************
// Monitor ist 1920 x 1080
// x=1720
// y=400
// Image2.Canvas.CopyRect(Ziel, Image1.Canvas, Quelle);
//******************************************************************************

procedure TForm1.ScreenShot(Bild: TBitMap);
var
  c: TCanvas;
  r: TRect;
begin
  x:= 1720;
  y:= 400;

  c := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  try
    r := Rect(0, 0, (Screen.Width -x ), (Screen.Height-y ));
    Bild.Width := (Screen.Width -x );
    Bild.Height := (Screen.Height -y);
    Bild.Canvas.CopyRect(r, c, r);
  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;
end;

Es wird ein kleines Bild abgespeichert, wenn ich darauf klicke kommt ganz rechts ein vergrößertes Bild
damit ich meine Items besser sehe.

Ja es ist schon etwas blöde bei jeden acc das inventar in die linke obere ecke zu ziehen.

Ich habe schon einige tipps bekommen, aber sorry ich bekomme es einfach nicht hin.

mfg
Miniaturansicht angehängter Grafiken
m2.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.574 Beiträge
 
Delphi 12 Athens
 
#13

AW: Screenshot Frage

  Alt 5. Aug 2025, 18:16
[deleted]
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Aug 2025 um 18:29 Uhr)
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
119 Beiträge
 
#14

AW: Screenshot Frage

  Alt 5. Aug 2025, 18:37
@himitsu, du hast mich nicht verstanden.

ich schreibe es dir noch einmal.
1. Mein Spiel ist gestartet und läuft im Hindergrund.
2. Im Vordergrund ist mein Tool gestartet.
3. Ich spiele im Fenster Modus.
4. Ich drücke auf den Button Screen.

Delphi-Quellcode:
//Char 1 Inventar Bild1
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.Visible := False;
  Sleep(STime); // some delay, ein wenig Zeit geben
  ScreenShot(Char1_1.Picture.BitMap);
  Form1.Visible := True;
end;
Mein Tool verschwindet (visible:= false), jetzt sehe ich mein Spiel auf dem Bildschirm.
Es wird ein screen gemacht und der linke obere Bereich wird abgespeichert.


Delphi-Quellcode:

procedure TForm1.ScreenShot(Bild: TBitMap);
var
  c: TCanvas;
  r: TRect;
begin
  x:= 1720;
  y:= 400;

  c := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  try
    r := Rect(0, 0, (Screen.Width -x ), (Screen.Height-y ));
    Bild.Width := (Screen.Width -x );
    Bild.Height := (Screen.Height -y);
    Bild.Canvas.CopyRect(r, c, r);
  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;
end;

mfg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.574 Beiträge
 
Delphi 12 Athens
 
#15

AW: Screenshot Frage

  Alt 5. Aug 2025, 18:48
Doch doch, hab ich (das vorhin hatte sich nur verlaufen )
https://www.delphipraxis.net/97980-d...ml#post1550780


Aber du hast nicht zugehört, was hier mehrmals gesagt wurde!

Warum verwendest du immernoch einen Rect, für Source und Dest?
Dein r ist die Source-Position auf'm Desktop, aber im Ziel-"Bild" soll das doch auf eine andere Position (Dest).
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Aug 2025 um 18:50 Uhr)
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
119 Beiträge
 
#16

AW: Screenshot Frage

  Alt 5. Aug 2025, 19:13
Aber du hast nicht zugehört, was hier mehrmals gesagt wurde!

Warum verwendest du immernoch einen Rect, für Source und Dest?
Dein r ist die Source-Position auf'm Desktop, aber im Ziel-"Bild" soll das doch auf eine andere Position (Dest).
Weil ich da nicht durch blicke, sorry



mfg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.574 Beiträge
 
Delphi 12 Athens
 
#17

AW: Screenshot Frage

  Alt 5. Aug 2025, 19:35
mach mal so
Delphi-Quellcode:
    Bild.Width := Screen.Width;
    Bild.Height := Screen.Height;
    Bild.Canvas.CopyRect(r, c, r);
dann siehst du, was gemeint ist.

Dein Bild ist da,
nur halt nicht da, wo du denkst.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
10.064 Beiträge
 
Delphi 12 Athens
 
#18

AW: Screenshot Frage

  Alt 5. Aug 2025, 20:25
Weil ich da nicht durch blicke, sorry
Ich habe oben doch ein konkretes Beispiel mit Erklärung geschrieben. Wenn du das nicht verstehst, musst du schon genauer sagen, was du nicht verstehst.
Wie sieht denn dein aktueller Code aus? Du müsstest ja nun eine zweite TRect Variable haben. Und wenn du den Ausschnitt im Ziel direkt links oben haben möchtest, sieht das für einen 50x100 Pixel großen Ausschnitt z.B. so aus:
Delphi-Quellcode:
var
  TargetRect: TRect;
begin
  TargetRect := Rect(0, 0, 50, 100);
  ...
  Bild.Canvas.CopyRect(TargetRect, c, r);
Du möchtest den Ausschnitt nicht an die gleiche Stelle (rechts unten) in dein Bild bekommen. Also musst du eine andere Position dafür übergeben.

Anders gefragt:
Verstehst du denn deinen eigenen Code oder hast du den nur irgendwo kopiert?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 30. Nov 2003
Ort: Luterbach (CH)
711 Beiträge
 
Delphi 12 Athens
 
#19

AW: Screenshot Frage

  Alt 5. Aug 2025, 21:06
Anders gefragt:
Verstehst du denn deinen eigenen Code oder hast du den nur irgendwo kopiert?
Gemäss Eingangspost handelt es sich nicht um den eigenen Code.

Der Code stammt vermutlich vom SDC
Roland
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
119 Beiträge
 
#20

AW: Screenshot Frage

  Alt 6. Aug 2025, 06:10
Guten morgen, war das eine Geburt
Jetzt habe ich es verstanden wie es geht.

Ich musste die größe des Bildes auch anpassen mit
Bild.Width := (Screen.Width-1730);
Bild.Height := (Screen.Height-330);
Weil das Kopierte muss ja da rein.

Jetzt sieht es gut aus
Danke für eure Hilfe.

Delphi-Quellcode:
procedure TForm1.ScreenShot(Bild: TBitMap);
var
  c: TCanvas;
  r, TargetRect : TRect;
begin
  c := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  try
    r := Rect(1730, 330, (Screen.Width), (Screen.Height ));

    Bild.Width := (Screen.Width-1730);
    Bild.Height := (Screen.Height-330);

    TargetRect := Rect(0, 0, 190, 750);
    Bild.Canvas.CopyRect(TargetRect, c, r);
  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;
end;

Und auch ein Bild wie es jetzt aussieht.

mfg
Miniaturansicht angehängter Grafiken
m2_screen.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 21:25 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