Einzelnen Beitrag anzeigen

Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#1

Pixelübertragung auf PaintBox

  Alt 2. Dez 2007, 12:12
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.
Frank Dumont
  Mit Zitat antworten Zitat