Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 26.07.13 21:47 
Hallo,
ich habe seit einiger Zeit versucht mein Astroprogramm www.entwickler-ecke....ewtopic.php?t=110678 mit einem XP-Manifest zu verbinden (windowsxp.res einbinden), da es ja dann etwas schöner aussieht. :D

Mit einer kleinen Unschönheit (die Schalter in der Toolbar sind nach oben verschoben) funktioniert es, nur tritt der Effekt auf, dass die Animation des Sternhimmels dann nicht mehr flüssig abläuft, sondern scheinbar nur jedes zweite Bild angezeigt wird, d.h. es "ruckelt". Ich habe (fast) alles probiert, ohne Ergebnis. Auch wenn ich alle anderen sichtbaren Komponenten ausblende und nur noch das Bitmap in die Paintbox kopiert wird, ändert es sich nicht. Es "ruckelt".

Kann es sein, dass der XP-Style die Ausführungsgeschwindigkeit des Programms so stark abbremst? Ohne XP-Style ist alles vollkommen in Ordnung. Außerdem dürfte mein Rechner eigentlich keine Probleme haben, eine zügige Animation darzustellen.
Vielleicht stelle ich mich auch wieder nur blöd an.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.07.13 09:34 
Ohne Quelltext kann ich da nicht viel testen. Aufgefallen ist mir das jedenfalls in eigenen Programmen nicht.
Kannst du vielleicht mal schauen, ob du das in einem kleinen Beispielprojekt auch hast und das dann anhängen?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 27.07.13 13:00 
Wenn ich sowas beobachte, dann spiele ich immer etwas am DoubleBuffered der einzelnen Komponenten rum. Meistens geht das davon dann weg.

_________________
We are, we were and will not be.
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Sa 27.07.13 20:03 
Hallo,
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich sowas beobachte, dann spiele ich immer etwas am DoubleBuffered der einzelnen Komponenten rum.

Danke für den Hinweis. DoubleBuffered mag ich nicht so richtig und benutze es deshalb auch sehr selten. Hier hatte ich es auch nicht.
Ich habe als Test in meinem Hauptprogramm 9000 Textseiten inkl. 9000 Abbildungen so schnell wie möglich hintereinander anzeigen lassen, mit XP-Style und ohne. Nach mehreren Testläufen ergab sich, dass mit XP-Style knapp 3 % mehr Zeit benötigt wird. Das ist nicht viel, also ohne Bedeutung, vielleicht auch nur ein Messfehler.

Dann habe ich mir nochmals das Astroprogramm vorgenommen und das kurze Timer-Intervall vom 10 ms auf 20 ms erhöht. Im Ergebnis läuft das Programm mit beiden Stilen gleichschnell und nur unwesentlich langsamer als vorher. Es wird wohl am zu kurzen Timer gelegen haben.
Verschärfend kam wohl noch hinzu, dass nach meinem "Urlaub vom Internet" der Rechner im Hintergrund "Millionen" von Updates holte. :wink:

Meine Anfrage in der EE war wohl zu früh, ich hätte noch etwas experimentieren und nachdenken sollen. :autsch:

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.07.13 22:07 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
DoubleBuffered mag ich nicht so richtig und benutze es deshalb auch sehr selten.
Das führt oft zu einem Flackern, wenn man es nicht nutzt.

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Dann habe ich mir nochmals das Astroprogramm vorgenommen und das kurze Timer-Intervall vom 10 ms auf 20 ms erhöht.
Ein Timer ist für eine solche Darstellung nicht unbedingt das Sinnvollste, aber dass es bei der Anzahl an Neuzeichen-Operationen mit komplettem Löschen (wegen fehlendem DoubleBuffered) flackert, ist logisch.
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Sa 27.07.13 22:23 
Hallo,
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ein Timer ist für eine solche Darstellung nicht unbedingt das Sinnvollste, aber dass es bei der Anzahl an Neuzeichen-Operationen mit komplettem Löschen (wegen fehlendem DoubleBuffered) flackert, ist logisch.

Eigentlich nicht, da ich ja nicht direkt zeichne, sondern mit einem Bitmap. Die Paint-Methode rufe ich im Timer auf.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure Tfhimmel.Paintbox1Paint(Sender: TObject);
var bitmap:tbitmap;
    myrect,birect:trect;
begin
    bitmap:=tbitmap.create;
    bitmap.width:=paintbox1.width;
    bitmap.height:=paintbox1.height;
    birect:=paintbox1.ClientRect;
    myrect:=birect;
    malen(bitmap.canvas, sender);
    paintbox1.canvas.copyrect(birect,bitmap.canvas,myrect);
    bitmap.free;
end;

Ein globales Bitmap habe ich auch versucht, brachte aber nichts, da die Berechnung und Darstellung der zeitintensive Teil sind. Immerhin müssen von 1800 Sternen die Äquatorkoordinaten auf Beobachtungsort und -zeit umgerechnet und auf die Ebene projiziert werden. Dazu sind noch die Orte von Sonne, Mond und Planeten immer wieder zu aktualisieren usw... Das kostet Zeit und offenbar mehr als 10 ms auf meinem Computer.
DoubleBuffered nehme ich eigentlich nur bei TImage und selten bei TListbox. Ansonsten kopiere ich immer im Speicher vorbereitete Bitmaps.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein