BGRA MondPhasen - animiert

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRA MondPhasen - animiert

Beitrag von Winni »

siro hat geschrieben:
Mi 12. Mai 2021, 13:27
Ich habe eine kleine Änderung vorgenommen, nun scheint es bei mir zu laufen.

Code: Alles auswählen

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
  //  Timer1.enabled:=FALSE;         ich würde hier auch den Timer stoppen, aber das scheint es nicht zu sein

  StartUp:=TRUE;  // damit nicht neu gezeichnet wird.
  
end;  
Hi!

Guter Trick! Hätte von mir stammen können. Wenn ich Win10 hätte ...

Danke!

Winni

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRA MondPhasen - animiert

Beitrag von Winni »

af0815 hat geschrieben:
Mi 12. Mai 2021, 16:28

Das Grundlegende Problem ist, das die OnPaint Routine laufend angesprungen wird und alles blockiert, auch das Close. Jetzt geht auch der Timer mit 10ms Zyklus und der Mond ändert sich rasch.
Hi!

Unter Win7 nicht. Wie gesagt: Das ist "Fortschritt."

Aber Danke für Deine Infos aus dem schnellen Rechner.

Winni

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRA MondPhasen - animiert

Beitrag von Winni »

Hallo!

Ich hab gerade nochmal nachgemessen, wieviel Zeit für das Draw auf dem Canvas verbraucht wird:

Linux: 9-14 ms für den Mond, 29-34 ms für Mond plus Icons
Win7 in VirtualBox: 11..16 ms für Mond, 31..36 ms für Mond plus Icons.

Ryzen 5 2400 G

Das sollte also nicht das Problem sein. Was auch immer Win10 da intern veranstaltet.

Das beste Windows war sowieso 3.11 mit 16 Bit! Und Delphi 1

Winni

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

Re: BGRA MondPhasen - animiert

Beitrag von siro »

ProcessMessages wird "normalerweise" ja nicht benötigt und frisst CPU Zeit.

Wenn ich den Block mit den Icons rausnehme, geht das wunderbar auch ohne ProcessMessages
auch mit Timer Interval 10

Habe ich aber den Block mit den Icons drin, dann geht es ohne ProcessMesages garnicht mehr.
Wie kommt das denn ?

Bei den Icons liegt meiner Meinung nach das Hauptproblem...
Nehme ich das raus und auch ProcessMessages, dann gibt es keine Probleme, dann brauche ich auch
nicht die FormCloseQuery ändern...so scheint es zumindest bei mir zu sein.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRA MondPhasen - animiert

Beitrag von Winni »

Hi!

Du stösst da auf einen kritischen Punkt unter Windows: Das zeichnen auf das Form.Icon, denn das Zeichnen auf das Application.Icon erledigt er klaglos.

Wie im Source schon vermerkt bringt ein copyRect auf den Form.Icon.Canvas die ganze App zum Stilstand - frozen. Die kann man nur noch mittels der IDE oder mit dem Taskmanager abwürgen. Anscheinend mag Windows das nicht, wenn man regelmässig auf das Form.Icon zeichnet. Aber da das Ganze ans Windows Widget Set übergeben wird, kann man es auch kaum entwanzen. Also das draw auf den Form.Ion.Canvas ausklammern. Schade.

Unter Linux/gtk2 gibt es keine Probleme.

Ach wenn sie doch endlich Windows aus Datenschutzgründen verbieten würden.. Die rechtliche Grundlage ist vorhanden, nur traut sich keiner. Die Macht der Monopole .....

Winni

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

Re: BGRA MondPhasen - animiert

Beitrag von siro »

Es ist aber trotz alledem ein sehr schönes Beispiel was Du da gebaut hast.
Hier kann man nämlich sehen, das der Mond nicht immer Sichelförmig ist, das hat ein Bekannter von mir nicht geglaubt.
Jetzt hab ich es schwarz auf weiss, bzw. Gelb auf Blau :wink:
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: BGRA MondPhasen - animiert

Beitrag von af0815 »

Winni hat geschrieben:
Mi 12. Mai 2021, 16:39
Aber Danke für Deine Infos aus dem schnellen Rechner.
Normaler Laptop:

Gerätename LAPTOP
Prozessor Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz 2.71 GHz
Installierter RAM 32,0 GB (31,7 GB verwendbar)
Systemtyp 64-Bit-Betriebssystem, x64-basierter Prozessor
Stift- und Toucheingabe Unterstützung der Toucheingabe mit 10 Touchpunkten

Edit: Aus voller Hose stinkts sich leichter. Ist schon ein ziemliches Gerät
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: BGRA MondPhasen - animiert

Beitrag von Soner »

Bei mir tut es genau das was Winni beschrieben hat, kein Fehler kein Nebeneffekte.
Windows 10 Pro, Lazarus 2.0.11, fpc 3.2.1. alles 64 bit.

Wenn man aufpasst, dann kann man es auch bißchen effizienter machen z.B. in der Prozedur DrawMoon TBGRABITMAP nichtt ständig neu erstellen und freigeben. Mann kann es als globale objekt Variable deklarieren und die Zeit beim erzeugen und zerstören sparen. Gerade neue Speicher Anforderungen sind doch langsam.

wennerer
Beiträge: 507
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: BGRA MondPhasen - animiert

Beitrag von wennerer »

Hi Winni,
wie erwartet unter Linux keine Probleme. Cooles Programm, Danke.

Viele Grüße
Bernd

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRA MondPhasen - animiert

Beitrag von Winni »

Soner hat geschrieben:
Mi 12. Mai 2021, 20:02

Wenn man aufpasst, dann kann man es auch bißchen effizienter machen z.B. in der Prozedur DrawMoon TBGRABITMAP nichtt ständig neu erstellen und freigeben. Mann kann es als globale objekt Variable deklarieren und die Zeit beim erzeugen und zerstören sparen. Gerade neue Speicher Anforderungen sind doch langsam.
Hi!

Ja - manchmal muss man sich entspannt zurücklehnen und sich sein Zeugs in Ruhe ansehen.
Die Var "sign" in CreateMoon kann man mit einem abs () auch überflüssig machen. Und bestimmt noch mehr. Ich hab das ziemlich runtergehauen. Die meiste Zeit hab ich mit den widerspenstigen Icons unter Windows verbracht.

Für eine naturalistische Ansicht bräuchte man natürlich noch den Breitengrad. Ich bin immer wieder erstaunt, wie der Mond im südlichen Mittelmeer auf dem Rücken liegt. Aber das sollte ja keine wissenschaftliche Abhandlung werden.

Winni

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRA MondPhasen - animiert

Beitrag von Winni »

Hallo!

Ich hab mir die Probleme angesehen und jetzt eine Version erstellt, die auch auf schwachbrüstigen Rechnern laufen sollte:

* Die BGRAbitmap für den Mond wird nur bei einem resize neu erzeugt.
* Die BGRABitmap für die Icons wird separat erzeugt und nicht mehr aus der Mond-Bitmap erzeugt
* Für die Icons wird jetzt ein separates Polygon aus dem Mond-Polygon erzeugt
* Dem Problem beim Exit wird begegnet indem er 2*Timer.Intervall schläft, bevor er den Laden zumacht.
* Außerdem wird vor dem Exit das Zeichnen ausgestellt.

Für Geschwindigkeits-Fetischisten gibt es noch ein zweites Label, das die Millisekenden für Mond und Icons anzeigt. Wer das nicht sehen möchte, kann es mit Ctrl-T aus- (und wieder an-) schalten.

Danke allerseits für die Hinweise.

Neue Version anbei.

Winni
Dateianhänge
BGRAmoon.v01.zip
(77.89 KiB) 123-mal heruntergeladen

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

Re: BGRA MondPhasen - animiert

Beitrag von siro »

Schade, die Anwendung steht bei mir leider wieder und ich kann sie nicht beenden.... :wink:

Die Anwendung steht auch plötzlich nur beim Resizen...

Siro
Zuletzt geändert von siro am Do 13. Mai 2021, 20:07, insgesamt 1-mal geändert.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

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

Re: BGRA MondPhasen - animiert

Beitrag von wp_xyz »

Wäre es nicht besser, sich zum Programmstart (oder evtl sogar vorher) eine ico-Datei mit sowas wie 36 Bildern zu erstellen (10-Grad-Schritte, oder feiner aufgelöst) und dem Application.Icon zuzuweisen anstatt zur Laufzeit im Icon herumzumalen, was Windows offenbar überhaupt nicht mag? Zur Laufzeit wählt man dann das zur aktuellen Mondphase passende Teilbild aus (icon.Current := ..., wenn ich mich recht erinnere).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRA MondPhasen - animiert

Beitrag von Winni »

Hi!

Läuft hervorragend unter Win7 und Lin64.

Holt Euch endlich mal funktionierende Betriebssysteme. Gibt genug davon.

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: BGRA MondPhasen - animiert

Beitrag von af0815 »

Winni hat geschrieben:
Do 13. Mai 2021, 21:00
Holt Euch endlich mal funktionierende Betriebssysteme. Gibt genug davon.
Dann wären wir bei CP/M86 stehengeblieben. Besser noch DOM für die P800 Serie von Philps. https://www.theoengel.nl/P800/

Das war stabil und Betriebssysteme :-)

BTW: Das 'einfache'Programm zeigt aber gut die Probleme über die BS Grenzen hinweg.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten