AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Emitteln welche Pixel zur Zeit gemalt werden
Thema durchsuchen
Ansicht
Themen-Optionen

Emitteln welche Pixel zur Zeit gemalt werden

Ein Thema von waschi · begonnen am 28. Okt 2004 · letzter Beitrag vom 8. Nov 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#11

Re: Emitteln welche Pixel zur Zeit gemalt werden

  Alt 8. Nov 2004, 11:17
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...
Thomas
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#12

Re: Emitteln welche Pixel zur Zeit gemalt werden

  Alt 8. Nov 2004, 11:54
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...
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.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#13

Re: Emitteln welche Pixel zur Zeit gemalt werden

  Alt 8. Nov 2004, 12:20
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?
Thomas
  Mit Zitat antworten Zitat
waschi

Registriert seit: 11. Okt 2004
Ort: HH
14 Beiträge
 
#14

Re: Emitteln welche Pixel zur Zeit gemalt werden

  Alt 8. Nov 2004, 12:33
hey schoen das schon ein paar über, das meiner meinung nach sehr interessante, thema diskutieren.


vielleicht schaffen wir es ja ein bisschen code zu sammeln.
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#15

Re: Emitteln welche Pixel zur Zeit gemalt werden

  Alt 8. Nov 2004, 12:42
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?
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.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 02:15 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