Mahlzeit zusammen,
Delphi bin ich gerade erst am herunterladen, musste leider meinen PC formatieren. Trotzdem habe ich eine Art Pseudocode aufgeschrieben, damit ich es gleich so schnell wie möglich umsetzen kann
Mein Vorhaben:
Erst einmal Pixel um den Mauszeigerbereich in das Programm in eine Paintbox übertragen. Später werde ich es dann vergrößern. Jedoch bin ich mir ziemlich sicher, dass meine Methode extrem langsam sein wird, da ich schon einmal Probleme mit einer ähnlichen Idee hatte. Hier mal der Codeschnipsel:
Delphi-Quellcode:
procedure magnify(x,y:integer; pb:tpaintbox);
var
xt,yt:integer;
begin
for xt:=-10 to 10 do
for yt:=-10 to 10 do
begin
pb.canvas.pixels[xt,yt]:=getpixel(getwindowdc(getdesktopwindow),x+xt,y+yt);
end;
end;
Das ganze wird voraussichtlich über einen Timer aufgerufen:
Delphi-Quellcode:
procedure timer(sender:tobject);
begin
magnify(mouse.cursorpos.x,mouse.cursorpos.y,paintbox);
end;
Nun, jetzt frage ich euch, wie man das ganze schneller realisieren könnte
Folgende Ideen sind mir gekommen, um es zu beschleunigen:
- Pixelfarben in ein Array übertragen, von dort aus in die Paintbox
- Direkt in ein Bitmap malen, dann auf die Paintbox übertragen
- "Screenshot" anfertigen, Bereich ausschneiden und in Paintbox übertragen
- Möglicher Weise ein Windows-Paintereignis abfangen und Informationen "klauen"
Wie würdet ihr rangehen?
Vielen Dank im Voraus,
liebe Grüße,
Frank.