AGB  ·  Datenschutz  ·  Impressum  







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

Clipping in FMX

Ein Thema von Kraisel · begonnen am 17. Jul 2014 · letzter Beitrag vom 21. Jul 2014
Antwort Antwort
Benutzerbild von Kraisel
Kraisel

Registriert seit: 19. Mär 2012
Ort: Bochum-Linden
64 Beiträge
 
Delphi 12 Athens
 
#1

Clipping in FMX

  Alt 17. Jul 2014, 17:42
Hallo,

wenn ich mit MFX in XE5 in einer Komponente (Descendant von TControl) in der Paint-Methode außerhalb des Canvas.RectF zeichne, wird offensichtlich zunächst nichts geclippt. Sowohl zur Design- als auch zur Runtime kann man also auf dem gesamten Canvas zeichnen.

Wenn ich dann aber zur Laufzeit an der Komponente Änderungen vornehme, wird alles auf Canvas.Rect geclippt, und alles außerhalb meiner Komponente wird NICHT mehr gezeichnet.

Wie kann ich FMX nun veranlassen, auch nach erstem Bildaufbau außerhalb von Canvas.RectF zu zeichnen?

Die Komponente einfach größer machen, geht zwar, ist aber nicht sinnvoll, da man dann bei Align-, Padding- und Margin-Einstellungen schnell an unüberwindbare Grenzen kommt.
Peter Kaisler
Das einzig Komplizierte ist zu begreifen wie einfach es ist.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.546 Beiträge
 
Delphi 12 Athens
 
#2

AW: Clipping in FMX

  Alt 17. Jul 2014, 19:26
Ich verstehe vielleicht nicht so ganz die Frage (wie kann man zur Designzeit auf dem Canvas zeichnen?) und weiß auch nicht, warum Du außerhalb des Canvas der Komponente zeichnen willst (denn normalerweise zeichnet man doch nur im Bereich der Komponente, oder?), aber dennoch der Versuch einer Hilfestellung:

Mit "Canvas.IntersectClipRect (ARect)" kannst Du den Clipping-Bereich steuern (also festlegen, wo gezeichnet wird).

Ich gehe davon aus, dass Dir der Rest der Canvas-Verwendung (Canvas.beginscene, ggfls. Sichern und Wiederherstellen des Canvas, usw.) geläufig ist.
  Mit Zitat antworten Zitat
Benutzerbild von Kraisel
Kraisel

Registriert seit: 19. Mär 2012
Ort: Bochum-Linden
64 Beiträge
 
Delphi 12 Athens
 
#3

AW: Clipping in FMX

  Alt 17. Jul 2014, 23:05
Hallo Harry,

danke für die Antwort.

Ich habe in einigen Anzeigekomponenten (Leds, 7-Segment usw.) einen Glow-Effekt, der eben über die Komponente herauszeichnen muss, wenn sie z.B. aktiv oder selektiert ist. Dadurch kann man in technischen Einrichtungen wesentlich deutlicher machen, dass z.B. eine Led, ein Segment usw. AN, AUS oder SELECTED ist. Bei schlechten Lichtverhältnissen und/oder Sonneneinstrahlung in einer Maschinenhalle ist das auf dem Screen sonst oft nur durch Suchen erkennbar.

Jede Componente zeichnet sich zur Designzeit auf dem Canvas, selbst wenn es bei nichtvisuellen Komponenten nur das Icon ist.

Nein, ... mit IntersectClipRec wird nur noch die gemeinsame überlappende Fläche mit dem Control.Canvas.BoundsRect gezeichnet. Ich will aber quasi auf z.B. (-30, -30, TControl.Width + 30, TControl.Height + 30) zeichnen.

Vor allem kapiere ich nicht, wieso alles beim ersten zeichnen OK ist, und erst beim Repaint auf BoundsRect geclippt wird, obwohl die PaintMethode identisch ist. Das bedeutet ja, dass FMX beim ersten zeichnen den gesamten Canvas freigibt (eben NICHT clippt) und beim Repaint NUR noch mein Control. Wieso???
Peter Kaisler
Das einzig Komplizierte ist zu begreifen wie einfach es ist.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.546 Beiträge
 
Delphi 12 Athens
 
#4

AW: Clipping in FMX

  Alt 17. Jul 2014, 23:13
Ach so, das hätte ich mir ja eigentlich denken können, Du entwickelst gerade selber eine eigene Komponente. In dem Bereich bin ich leider nicht so firm, aber vielleicht kann man ja was erkennen, wenn Du mal den konkreten Source-Code postest, mit dem Du die Zeichenausgabe machst.
  Mit Zitat antworten Zitat
Benutzerbild von Kraisel
Kraisel

Registriert seit: 19. Mär 2012
Ort: Bochum-Linden
64 Beiträge
 
Delphi 12 Athens
 
#5

AW: Clipping in FMX

  Alt 18. Jul 2014, 00:10
Natürlich kann man auch mit den Effect-Komponenten (hier dann TGlowEffect) arbeiten, aber ich würde trotzdem gerne den Zusammenhang des Clippings wie oben beschrieben, verstehen.
Peter Kaisler
Das einzig Komplizierte ist zu begreifen wie einfach es ist.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Clipping in FMX

  Alt 18. Jul 2014, 13:41
Nur mal so grundsätzlich:

Du hast keinen Einfluss, wann Deine Komponente und das Umfeld gezeichnet wird. Selbst wenn es mit Deinem aktuellen FMX funktionieren würde, könnte es bei der nächsten Version Probleme geben.

Daher solltest Du Dich an das Effect-Prinzip halten und Dich darauf verlassen, dass FMX das dann ordentlich zeichnet.

Ansonsten würde mir nur einfallen, das Control nach außen um einen transparenten Bereich zu vergrößern und auf diesen ggf. einen Verlauf zu zeichnen. Das würde aber das Handling erschweren, da die Controls immer größer wären als man eigentlich denkt.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:28 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 by Thomas Breitkreuz