Ich brauche außerhalb der Anwendung Screenshot:Screenshot bestimmter Bereich des Bildschirms nur Screenshots oben links?
X: centerOfScreen-100 bis centerOfScreen + 100
Y: centerOfScreen-100 bis centerOfScreen + 100
function GetSCREENSHOT: TBitmap;
var
Locked: Boolean;
Canvas: TCanvas;
R: TRect;
begin
Result := TBitmap.Create;
Result.Width := 200;
Result.Height := 200;
Canvas := TCanvas.Create;
Canvas.Handle := GetDC(0);
Locked := Canvas.TryLock;
try
// just a poor example
R := Rect(1280 div 2 - 100, 720 div 2 - 100, 1280 div 2 + 100, 720 div 2 + 100);
Result.Canvas.CopyRect(R, Canvas, R);
finally
if Locked then
Canvas.Unlock;
ReleaseDC(0, Canvas.Handle);
Canvas.Free;
end;
end;
Ich weiß, es ist schlecht jetzt geschrieben, nur zum Testen. I c & p den größten Teil des Codes und ich kann nicht herausfinden, warum es nur den oberen linken Bereich meines Bildschirms kopiert.
GetDC (0) gibt den DC des gesamten Bildschirms zurück ... richtig? Was mache ich falsch?
"nur Copys" irgendwie widerspricht mit Ihrer Frage. Entweder kopiert es den oberen linken Bereich oder es kopiert die Mitte Ihres Bildschirms oder kopiert es den oberen linken Bereich der Mitte des Bildschirms? * G * – ViRuSTriNiTy
Es kopiert nur den oberen linken Bereich. Das heißt, ich muss die Funktion wie folgt aufrufen: 'R: = Rect (0, 0, 1280 div 2 + 100, 720 div 2 + 100);' und dann funktioniert es. Sein Verhalten ist seltsam, gibt es eine Möglichkeit, dass Sie oben links beginnen müssen, um zu erfassen, bevor Sie noch etwas aufnehmen können? Aber genau das wollte ich vermeiden - nicht benötigte Bereiche des Bildschirms erfassen ... – XYZ
Code kann entweder schlecht geschrieben oder von einer anderen Stelle kopiert werden. Welcher Fall? –