![]() |
Emitteln welche Pixel zur Zeit gemalt werden
Hallo Delphifreunde.
Ist es mit hilfe einer Windows API zu erfahren welche auf dem Bildschirm Pixel gerade neu gezeichtnet werden? Danke Tschüss waschi |
Re: Emitteln welche Pixel zur Zeit gemalt werden
Nein, gibt es meines Wissens nicht. Und wenn es das gäbe, viel Spass beim Verarbeiten der Informationsflut: Nehmen wir eine Auflösung von 1280 x 1024 und wir holen ein maximiertes Fenster au der Taskbar, dann wären das 1310720 geänderte Pixel.
|
Re: Emitteln welche Pixel zur Zeit gemalt werden
...und wenn beim Zeichnen jedes Pixels Informationen gespeichert werden müssten, welches Pixel das ist, würde das Ganze seeehr langsam werden...
|
Re: Emitteln welche Pixel zur Zeit gemalt werden
Windows selber muss es ja auch irgendwo machen :wink:
Noch jemand eine Idee? |
Re: Emitteln welche Pixel zur Zeit gemalt werden
Nein, das ermiitelt den Berich der neu gezeichnet werden muss und schickt, dann an das oder die Fenster, die in diesem Breich liegen eine WM_PAINT Nachricht und benachricgtigt so die entsprechenden Fesnter, dass sie sich neu zeichnen müssen.
|
Re: Emitteln welche Pixel zur Zeit gemalt werden
genau den Bereich brauche ich!
Eine Idee wie ich an den Bereich komme? |
Re: Emitteln welche Pixel zur Zeit gemalt werden
kannst du mir helfen Luckie?
|
Re: Emitteln welche Pixel zur Zeit gemalt werden
|
Re: Emitteln welche Pixel zur Zeit gemalt werden
leider kann ich mit deiner antwort nix anfangen.
luckie hatte doch schon einen ansatz, könntest du noch ein wenig darauf eingehen bitte, luckie |
Re: Emitteln welche Pixel zur Zeit gemalt werden
Hi waschi,
du musst mit Hilfe von Hooks überprüfen, ob die WM_PAINT-Nachricht an ein x-beliebiges Fenster gesendet wurde (in deinen Fenstern bemerkst du dies ja mit OnPaint). Verwend doch einfach mal die Suchlinks, Hooks wurden hier schon oft genug durchbesprochen. (AFAIK gibts auch irgendwo ein Tut dafür). Greetz alcaeus |
Re: Emitteln welche Pixel zur Zeit gemalt werden
Mit diesem Vorgehen kriegst Du aber mehr als die zu Ändernden Pixel...
Wenn Du 2 Fenster hast die sich überlappen und das eine um 3 Pixel bewegst zeichnet Windows trotzdem das ganze Fenster. Du kriegst also nur die Handles der Fenster heraus und kannst von dennen die Größe kriegen. Und um die dann zu ändern müßtest Du dann die Paint-Methoden der Fenster überschreiben... Das Tutorial hierzu kriegste hier und ist sehr gut erklärt... finde ich! ![]() Aber auch gute Erklärungen machen ein schwieriges Thema nicht leicht... :zwinker: |
Re: Emitteln welche Pixel zur Zeit gemalt werden
Zitat:
|
Re: Emitteln welche Pixel zur Zeit gemalt werden
Ups... Das wusste ich nicht!
Also bestimmt im Endeffekt die Paint-Methode des Fensters was neu gezeichnet wird? Wie kommt man denn dann an die Zone ran? :gruebel: |
Re: Emitteln welche Pixel zur Zeit gemalt werden
hey schoen das schon ein paar über, das meiner meinung nach sehr interessante, thema diskutieren. :thumb:
vielleicht schaffen wir es ja ein bisschen code zu sammeln. |
Re: Emitteln welche Pixel zur Zeit gemalt werden
Zitat:
Delphi-Quellcode:
oder alternativ
int GetUpdateRgn(
HWND hWnd, // handle of window HRGN hRgn, // handle of region BOOL bErase // erase background flag );
Delphi-Quellcode:
Oder nicht die Standard-Canvas benutzen sondern mit
BOOL GetUpdateRect(
HWND hWnd, // handle of window LPRECT lpRect, // address of update rectangle coordinates BOOL bErase // erase flag );
Delphi-Quellcode:
arbeiten. Diese setzt automatisch die Clipping-Region. Kann man auch bei
HDC BeginPaint(
HWND hwnd, // handle to window LPPAINTSTRUCT lpPaint // pointer to structure for paint information );
Delphi-Quellcode:
als Flag angeben.
HDC GetDCEx(
HWND hWnd, // handle of window HRGN hrgnClip, // handle of clip region DWORD flags // device-context creation flags ); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz