AGB  ·  Datenschutz  ·  Impressum  







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

Regionen, Rahmen und Schatten

Ein Thema von stahli · begonnen am 3. Jun 2015 · letzter Beitrag vom 7. Jun 2015
 
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Regionen, Rahmen und Schatten

  Alt 4. Jun 2015, 15:54
Die Schatten werde ich jetzt anders versuchen. Dazu werde ich die Regionen der schattierten Controls in einer großen Region sammeln (so dass man eine große Ebene mit "Flecken" hat, das ganze um ein paar Pixel verschieben und den Hintergrund einfärben.
Dann können die Controls auf die Schattenflächen gezeichnet werden, so dass nur rechts und unten etwas Schatten über steht.
=> Ich muss dann wohl doch nochmal nach einer Blur-Funktion schauen.
Ich hatte mal eine Blur-Funktion gepostet.

1) Wenn ich für den Rahmen ein Polygon definiere und dieses Polygon dann auch mit CreatePolygonRgn benutze, um den Zeichenbereich zu begrenzen, dann werden die rechts und unten positionierten Rahmenlinien nicht mehr gezeichnet.
Daher habe ich das Polygon für die Region nach Rechts und unten um 1 Pixel vergrößert.

[...]

Für den Zweck ist das ja noch ok, aber kann man das irgendwie automatisieren?
Man könnte ja auch mal ein unregelmäßiges (z.B. sternförmiges mit schrägen und vielen Zacken) Polygon haben.
Auch das ginge. Du müsstest an jeder Ecke prüfen, ob der Vektor, in dessen Richtung sich der Schatten ausbreiten soll, ins Polygon reingeht oder aus dem Polygon rauskommt. Das kannst du leicht tun, indem schaust, ob das Skalarprodukt des Vektors mit den Normalen der beiden angrenzenden Kanten positiv oder negativ ist. Ich habe mal eine Skizze dazu gemacht. Positives Skalarprodukt ist in der Skizze blau, negatives Skalarprodukt ist rot. Somit ergeben sich für die Ecken drei verschiedene Fälle:
  • Rot/Rot: Die Ecke bleibt wo sie ist.
  • Blau/Blau: Die Ecke wird verschoben.
  • Rot/Blau: Eine zusätzliche Kante wird eingefügt.

Wobei bei dieser Lösung zu beachten ist, dass die Richtung der Normalen davon abhängt, in welcher Richtung das Polygon gewickelt ist. Man muss also definieren, welche Richtung positiv ist.
Angehängte Grafiken
Dateityp: png schatten-skizze.png (24,4 KB, 47x aufgerufen)
  Mit Zitat antworten Zitat
 


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 05:39 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