AGB  ·  Datenschutz  ·  Impressum  







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

Screenshot und Skalierung

Ein Thema von tofse01 · begonnen am 20. Nov 2024 · letzter Beitrag vom 25. Nov 2024
Antwort Antwort
tofse01

Registriert seit: 20. Nov 2024
8 Beiträge
 
#1

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 08:58
Ich demonstriere mal das Problem mit dem "Windows Rechner" als Beispielprogramm.

Die "echten" linken, oberen Koordinaten sind 252 x 193

Mein Programm bekommt mit dem obigen Code aber das hier raus, siehe Bild, alles ist versetzt und abgeschnitten
Angehängte Grafiken
Dateityp: png 2024-11-20 09_56_50.png (104,1 KB, 41x aufgerufen)
  Mit Zitat antworten Zitat
supermulti81

Registriert seit: 13. Okt 2023
34 Beiträge
 
#2

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:23
Moin,
probiere bzw. ersetze mal:
GetWindowRect(hWindow, R);

durch

GetClientRect(hWindow, R);
Width := R.Width;
Height := R.Height;
  Mit Zitat antworten Zitat
tofse01

Registriert seit: 20. Nov 2024
8 Beiträge
 
#3

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:25
Danke, ich brauche aber die Koordinaten von dem Programm, und die von dir genannte GetClientRect hat keine Parameter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:34
Doch, hat sie, wenn du die Richtige benutzt.
* Self.GetClientRect von der Form, bzw. TCustomForm
* Windows.GetClientRect aus der Windows.pas, bzw. Winapi.Windows.pas

Die machen aber natürlich beide genau das Gleiche.
R := DelphiKomponente.GetClientRect; oder GetClientRect(HandleDerKomponente, R);


Dein Programm ist skaliert, also bekommt es auch die Koordinaten skaliert, aus seiner eigenen verbogenen Sichtweise.
Wäre dein Programm für HighDPI ausgelegt, also es dem Windoes sagt "ich kann das", dann wird es nicht skalliert und bekommt auch alle Canvas und Koordinaten in unverfäschter Form.

Genauso wird dein Programm in aktuellen Windowsen virtualisiert, also wenn dein Programm fragt, welche Windowsversions das ist, bekommt es meistens XP oder Vista gesagt, weil sich dein Programm nicht als kompatibel mit der dem Windows geoutet hat.
https://www.delphipraxis.net/216149-...skmanager.html
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Nov 2024 um 10:22 Uhr)
  Mit Zitat antworten Zitat
tofse01

Registriert seit: 20. Nov 2024
8 Beiträge
 
#5

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:43
Verstehe ich leider nicht
Ich will die Koordinaten von einem externen Programm, das rein gar nichts mit dem Delphi Programm zu tun hat. Als Beispiel verwende ich den "Windows Rechner", hierzu suche ich mir den Handler raus

Verwende ich

GetWindowRect(Prog, t); Bekomme ich als Ergebnis 351 x 284 (links oben) raus

Verwende ich das hier

Windows.GetClientRect(Prog,t); Bekomme ich als Ergebnis 0 x 0 raus

"Prog" ist hier der Handler von dem "Win Rechner"
  Mit Zitat antworten Zitat
tofse01

Registriert seit: 20. Nov 2024
8 Beiträge
 
#6

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:54
Es liegt definitiv an den Win Einstellungen, verwende ich hier 100% (Was ich aber im Produktiveinsatz nicht machen kann) dann bekomme ich das gewünschte Ergebnis, siehe Anhang
Angehängte Grafiken
Dateityp: png 2024-11-20 10_51_29-Einstellungen.png (8,5 KB, 14x aufgerufen)
Dateityp: png 2024-11-20 10_52_25-.png (83,5 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
supermulti81

Registriert seit: 13. Okt 2023
34 Beiträge
 
#7

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:58
Oben links brauchst du doch gar nicht.

du holst doch das Bild über das Handle und das startet bei x=0 und y=0.
und GetClientRect(hWindow, R);
gibt dir ein Rect zurück. Da verwendest du Width und Height.

Width := R.Width;
Height := R.Height;

und bitte noch setzen:
Left := 0;
Top := 0;

dann klappt auch dein BitBlt.

BitBlt(bm.Canvas.Handle,
0,
0,
Width,
Height,
Dc,
Left,
Top,
SRCCOPY);
  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 02:15 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