Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#1

"Echte" Sichtbarkeitsprüfung

  Alt 16. Apr 2006, 21:21
Moin moin,

für mein aktuelles Projekt versuche ich herauszufinden, ob ein Fenster sich in einem bestimmten Bereich befindet. Allerdings ist das ganze ein wenig verzwickter, ich hab da nämlich noch ein boolean, das sagt "soll im bereich sein" bzw. sagt "soll nicht im bereich sein".

Ich zeige mal ein wenig code...

Delphi-Quellcode:
GetWindowRect(handle,r);
IntersectRect(ir,r,area);
intersectspace := abs((ir.Right - ir.Left) * (ir.Bottom - ir.Top));

if ((intersectspace >= puffer) xor IsValidSpace) then
  begin
    machwas;
  end;
ich rechne also zuerst das schnittrechteck zwischen dem zu überprüfenden bereich und dem fenster aus. dann den flächeninhalt dieses rechtecks. wenn der größer ist als ein bestimmter puffer, ist das fenster im bereich.

Wenn das Boolean IsValidSpace wahr ist UND das fenter sich im bereich befindet, dann ist für mich alles ok, und es muss nichts gemacht werden.

Am besten mach ich mal ne wahrheitstabelle...

Code:
A = "fenster im bereich?"
B = "Bereich valide?"
C = "Muss ich was tun?"

1 = wahr
0 = falsch

A|B|C
-+-+-
0|0|0 => fenster ist nicht im nicht validen bereich => alles ok
0|1|1 => fenster ist nicht im validen bereich => was tun!
1|0|1 => fenster ist im nicht-validen bereich => was tun!
1|1|0 => fenster ist im validen bereich => alles ok
Das ist doch eindeutig ein Fall für eine XOR-Verknüpfung, oder?
Warum funktioniert es dann nicht? Ich bekomme ziemlich unerklärliche (wenn auch reproduzierbare^^) Ergebnisse.
Mach ich beim Schneiden irgendwas falsch?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat