Animated toggle switch

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Animated toggle switch

Beitrag von theo »

Sieht gut aus!
Insbesondere der Eckige ist gut geworden. Natürlich passt die Rotation bei der runden Variante besser (rollende Kugel).
Der Runde ist leider noch etwas pixelig, da bräuchte es vielleicht BGRA.
Ich würde die Geschwindigkeit der Animation entweder konfigurierbar machen, oder gleich auf 1 oder 2 setzen.
Die Drehung nimmt man sonst kaum wahr.

Code: Alles auswählen

procedure TCustomOnOffSwitch.DoAnimation(Sender: TObject);
const
  SPEED = 1;  
Die Darstellung variiert auch etwas mit dem Widgetset.
Im Anhang GTK2 und Qt5 (Um Faktor 3 vergrößert, damit man es gut erkennen kann).
Man sieht gewisse Unterschiede in der "Interpretation" der Rundungen.
Da kann man wohl so nicht viel dagegen tun.

Danke!
Dateianhänge
switches_qt5.png
switches_qt5.png (3.18 KiB) 2883 mal betrachtet
switches_gtk2.png
switches_gtk2.png (3.34 KiB) 2883 mal betrachtet

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

Re: Animated toggle switch

Beitrag von wp_xyz »

Gibt es eine andere Möglichkeit als SetShape, ein TWinControl mit einem in Teilen transparenten Hintergrund zu zeichnen? TGraphicControl - kein Problem, da wäre TShape ein schönes Beispiel in der LCL. Aber TWinControl/TCustomControl?

Wenn das möglich wäre, könnte man das Control auf ein beidseits doppelt so großes Bitmap zeichnen und dann per StretchDraw wieder auf die richtige Größe schrumpfen lassen. Das ergibt ein recht gutes Antialiasing. Aber wenn man das Control wieder per SetShape ausschneiden muss, hat man wieder harte Kanten.

Der Hintergrund ist per Canvas.RoundRect gezeichnet. Offenbar nimmt qt5 hier für die Rundungen in der Höhe ein Pixel weniger als für das Rechteck... Wäre eine weitere Untersuchung wert, könnte ein Bug sein.

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Animated toggle switch

Beitrag von Ally »

Hallo,

anbei noch zwei Vorschläge die an die Schalter von Windows und Linux Mint angelehnt sind.
Die Schalter sind 20 Pixel hoch (bei 96 DPI) und entsprechen so der Größe wie sie auch von Win und Mint benutzt werden.
Um die „ausgefranste Optik“ zu vermeiden, habe ich komplett auf PNG’s gesetzt. Das hat auch den Vorteil, dass das Aussehen leicht angepasst werden kann. (Die entsprechenden SVG’s und PNG’s liegen bei.)
Die Demo ist jetzt noch keine Komponente, aber was noch nicht ist kann ja noch werden.
ScreenShot.png
ScreenShot.png (14.72 KiB) 2848 mal betrachtet
Dateianhänge
SwitchDemo.zip
(76.44 KiB) 47-mal heruntergeladen

wennerer
Beiträge: 524
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Animated toggle switch

Beitrag von wennerer »

Hallo Ally,
ich wollte es eben mal testen. Leider kommt bei mir dieser Fehler:
Bildschirmfoto vom 2023-11-18 18-53-21.png
Bildschirmfoto vom 2023-11-18 18-53-21.png (24.36 KiB) 2839 mal betrachtet
Viele Grüße
Bernd

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Animated toggle switch

Beitrag von Ally »

Hallo Bernd,

ich habe jetzt gerade etwas herumprobiert, kann den Fehler aber nicht nachvollziehen.
Vielleicht liegt es ja daran das ich Lazarus 3.0RC2 - FPC 3.2.2 x86_64-win64-win32/win64 verwende.

Frage in die Runde: tritt das Problem bei euch auch auf?

Viele Grüße
Roland

siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Animated toggle switch

Beitrag von siro »

Guten Morgen zusammen,

kein Problem bei:

Lazarus 3.0RC1 (rev lazarus_3_0_RC1-10-gfe49fef4fc) FPC 3.2.2 x86_64-win64-win32/win64

Riesen Problem bei:
Lazarus 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_64-win64-win32/win64


Lazarus stürzt regelrecht ab....
mit entsprechender Fehlermeldung
Problem.png
Problem.png (12.03 KiB) 2821 mal betrachtet

einen schönen Sonntag noch.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

dj_leinad
Beiträge: 34
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win10 pro (Laz 3.2 / FPC 3.2.2)
CPU-Target: Win 64Bit
Wohnort: CH

Re: Animated toggle switch

Beitrag von dj_leinad »

Der Fehler den Bernd in Seinem SC zeigt tritt bei mir unter Laz 2.2.6 und Laz 2.2.7 auf. Bei Laz 3.0RC2 und Trunk 3.99 ist alles Ok.

Gruss Dani
Erfahrung heißt gar nichts. Man kann eine Sache auch 35 Jahre schlecht machen.

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Animated toggle switch

Beitrag von Ally »

vielen Dank siro und dj_leinad.
Vielleicht hilft es dann die Datei project1.res zu löschen und neu zu compilieren?

Außerdem habe ich noch einen kleinen BUG beseitigt, der bei höher auflösenden Bildschirmen auftrat.

Viele Grüße
Roland
Dateianhänge
SwitchDemo.zip
(76.43 KiB) 51-mal heruntergeladen

siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Animated toggle switch

Beitrag von siro »

Hallo Roland,
Der Fehler bleibt bei mir bestehen.

Lazarus 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_64-win64-win32/win64

habe eben dieses Fenster noch bekommen:
problem_a.png
problem_a.png (41.15 KiB) 2817 mal betrachtet
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

wennerer
Beiträge: 524
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Animated toggle switch

Beitrag von wennerer »

Guten Morgen,
hat bei mir leider auch nichts gebracht. Das gleiche wie bei Siro.
Ich benutze : Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-gtk2. Ist eine Stable.

EDit: Hab mir dank fpcupdeluxe mal schnell eine trunk geladen. Da gehts problemlos! :D

Viele Grüße
Bernd

charlytango
Beiträge: 845
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Animated toggle switch

Beitrag von charlytango »

mir ist beim Mitlesen nur aufgefallen dass wp_xyz so etwas erwähnte:
wp_xyz hat geschrieben:
Mi 15. Nov 2023, 09:23
Mist, habe nicht dran gedacht, dass RotatePoint mindestens Laz3.0 benötigt. Habe nun den Anhang oben gegen eine funktionierende Version ausgetauscht.

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

Re: Animated toggle switch

Beitrag von wp_xyz »

Ally's Beispiel setzt zwingend Laz 3.0 voraus, da TImage vorher noch keine Images-Property hatte.

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Animated toggle switch

Beitrag von Ally »

Hallo wp_xyz

das habe ich auch gerade herausgefunden. :)
Die Imagelist macht aber das Erstellen von High-DPI Anwendungen so schön einfach.
Man könnte das sicherlich auch noch anders umsetzen, was aber auch aufwändiger werden dürfte.

Also vielen Dank an die Entwickler. Lazarus wird immer besser.

Viele Grüße
Roland

kirchfritz
Beiträge: 172
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win10 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Animated toggle switch

Beitrag von kirchfritz »

Und von mir gibt's dann die Variante für Lazarus Version < 3
Dateianhänge
Switchdemo_lazarus_2.zip
(51.31 KiB) 44-mal heruntergeladen

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Animated toggle switch

Beitrag von Ally »

Hallo kirchfritz,

vielen Dank.
Der zweite Switch hat noch nicht so funktioniert wie er sollte.
Anbei die angepasste Version.
Dateianhänge
Switchdemo_lazarus_2.x.zip
(51.19 KiB) 53-mal heruntergeladen

Antworten