Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Emitteln welche Pixel zur Zeit gemalt werden (https://www.delphipraxis.net/32808-emitteln-welche-pixel-zur-zeit-gemalt-werden.html)

atreju2oo0 8. Nov 2004 10:17

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!
Tutorial Hooks
Aber auch gute Erklärungen machen ein schwieriges Thema nicht leicht... :zwinker:

Vjay 8. Nov 2004 10:54

Re: Emitteln welche Pixel zur Zeit gemalt werden
 
Zitat:

Zitat von atreju2oo0
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!
Tutorial Hooks
Aber auch gute Erklärungen machen ein schwieriges Thema nicht leicht... :zwinker:

Nö, es werden nur die 3 Pixel-Spalten/Zeilen als nicht validierte Region markiert. Wenn in der WM_PAINT das Programm allerdings alles neu zeichnet, wie es meist Delphi-Programme machen (OnPaint und getDC statt BeginPaint - alles neu) ist das eigentlich falsch.

atreju2oo0 8. Nov 2004 11:20

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:

waschi 8. Nov 2004 11:33

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.

Vjay 8. Nov 2004 11:42

Re: Emitteln welche Pixel zur Zeit gemalt werden
 
Zitat:

Zitat von atreju2oo0
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:

Delphi-Quellcode:
int GetUpdateRgn(

    HWND hWnd,   // handle of window
    HRGN hRgn,   // handle of region
    BOOL bErase    // erase background flag
   );
oder alternativ

Delphi-Quellcode:
BOOL GetUpdateRect(

    HWND hWnd,    // handle of window
    LPRECT lpRect,    // address of update rectangle coordinates
    BOOL bErase    // erase flag
   );
Oder nicht die Standard-Canvas benutzen sondern mit

Delphi-Quellcode:
HDC BeginPaint(

    HWND hwnd,   // handle to window
    LPPAINTSTRUCT lpPaint   // pointer to structure for paint information
   );
arbeiten. Diese setzt automatisch die Clipping-Region. Kann man auch bei

Delphi-Quellcode:
HDC GetDCEx(

    HWND hWnd,   // handle of window
    HRGN hrgnClip,   // handle of clip region
    DWORD flags    // device-context creation flags
   );
als Flag angeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr.
Seite 2 von 2     12   

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