AGB  ·  Datenschutz  ·  Impressum  







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

Pixelübertragung auf PaintBox

Ein Thema von rawsoul · begonnen am 2. Dez 2007 · letzter Beitrag vom 2. Dez 2007
Antwort Antwort
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
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Pixelübertragung auf PaintBox

  Alt 2. Dez 2007, 12:27
Hallo,

da ganze würde ich mit einem Hier im Forum suchenoffscreenbitmap machen, also ein Bild im Speicher. Dann könnte man schon mal mit ScanLine arbeiten. Dann zeichnest du das fertige Bild mit windows.BitBlt() auf deine PaintBox.
Zitat von rawsoul:
Delphi-Quellcode:
(getwindowdc(getdesktopwindow),x+xt,y+yt);
         end;
end;
IMHO hast du hier ein schönes Speicherleck eingebaut.

EDIT:Oder gleich mit BitBlt() Das Bild vom Desktop auf deine Paintbox zeichnen.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von rawsoul
rawsoul

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

Re: Pixelübertragung auf PaintBox

  Alt 2. Dez 2007, 13:20
Klappt bestens mit BitBlt, vielen Dank
Frank Dumont
  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 09:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz