[Win10] Copie écran et mise à l'échelle 125%
Bonjour,
Je copie une partie de mon écran (composant PaVisu) dans un bitmap en passant par cette fonction sous Rio:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| function GetBitmap: TBitmap;
var WinCanvas: TCanvas;
begin
Try
Result := TBitmap.Create ;
WinCanvas := TCanvas.Create ;//créer le canvas pour la copie
WinCanvas.Handle:= GetWindowDC(0);//Trouve le handle de la fenêtre mère
Result.SetSize(Pavisu.Width+1, PaVisu.height+1) ;//Taille Bitmap
BitBlt(Result.Canvas.Handle,
0,
0,
Result.Width,
Result.Height,
WinCanvas.Handle,
Round(PaVisu.ClientOrigin.x),
Round(PaVisu.ClientOrigin.y),
SRCCOPY);
Finally
WinCanvas.Free;
end ;
end; |
Tout fonctionne bien sur différentes versions de Windows mais sous Win10 et avec un paramètre de "Mise à l'échelle et disposition" à 125%, le bitmap de sortie est incorrect: il y a un décalage de la zone extraite.
J'ai remarqué un sujet presque semblable ici mais ne résout à priori pas mon problème. Selon le param de mise à l'échelle, je dois affecter un coefficient à mes ClientOrigin mais je ne vois pas comment le faire dans mon code :aie:
Mes paramètres sous Win10:
En réglage 100%, j'ai une taille d'écran de 1920x1080 avec pixels/inch=96
En réglage 125%, j'ai une taille d'écran de 1536x864 avec pixels/inch=96
Je retrouve bien 1.25 entre 1920/1536 et 1080/864 mais à quel moment je dois affecter ce coefficient (ou un autre si 150%) dans mon code, je ne sais pas.
Merci pour vos conseils
LefjuCabro