![]() |
Hintergrundfarbe eines Objekts stetig ändern
Hallo!
Wir arbeiten in der Schule im Moment mit Delphi, und da es stinkelangweilig ist, muss ichs mir irgendwie interessanter machen :p Die Idee der letzten Stunde war, die Hintergrundfarbe der ListBox in der wahnsinnig spannende Berechnungen standen, ständig wechseln zu lassen. Mein Ansatz war (nachdem ich im Internet schon ein wenig recherchiert hatte) in etwa dieser hier:
Delphi-Quellcode:
Wenigstens mit Lazarus unter Linux tut das aber nicht (ich konnte es in der Schule in der Version noch nicht ausprobieren, wollte aber zu Hause mal schauen obs klappt), sondern hängt nur.
procedure TForm1.Button1Click(Sender: TObject);
begin while true do begin ListBox1.Color := clRed; ListBox1.Refresh; sleep(500); ListBox1.Color := clBlue; ListBox1.Refresh; sleep(500); Application.ProcessMessages; end; end; Seht ihr einen Fehler? Vielen Dank schonmal Pascal [edit=SirThornberry]Code-Tags durch Delphi-Tags ersetzt - Mfg, SirThornberry[/edit] |
Re: Hintergrundfarbe eines Objekts stetig ändern
Zitat:
|
Re: Hintergrundfarbe eines Objekts stetig ändern
Hast du den Satz zuende gelesen? :p
Wie schon gesagt, er hängt halt, es passiert garnix und ich muss den Prozess killen, weil ich ihn auch nicht mehr normal beenden kann. Er reagiert einfach nicht mehr. |
Re: Hintergrundfarbe eines Objekts stetig ändern
|
Re: Hintergrundfarbe eines Objekts stetig ändern
Ich würd nen Timer nehmen! Der wechselt dann ganz automatisch nach einer von dir bestimmten Zeit (Interval) immer wieder die Farbe des Editfeldes. Also z.B. rot, grün, blau, gelb,...
eleganter wäre natürlich ein dynamischer farbübergang, also etwas, wo man die einzelfarben gar nicht sieht, sonder nur den übergang vom roten ins blaue oder so, quasi ne farbüberblendung... dann müsstest du schleifen bauen in denen stetig die rgb werte verändert werden... also wenn du da bedarf hast sag nochma bescheid... will jetz auch nich ewig posten un dann interessierts nich |
Re: Hintergrundfarbe eines Objekts stetig ändern
hey, daran hätte ich großes Interesse :-D
|
Re: Hintergrundfarbe eines Objekts stetig ändern
Moin,
(Mal abgesehen davon, dass ich von Farb-Wechselnden Eingabeelementen nichts halte). Das mit den "weichen" Farbänderungen kannst du erreichen, indem du die Differenzen der Farben errechnest und dabei einen Alpha-Wert benutzt, diesen dann in einem regelmäßigen Intervall inkrementierst. (0..10..20 usw.) Dann kommst bei jedem Intervall der Ziel-Farbe näher und schließlich nimmt das Feld die Zielfarbe selbst an, das ganze kann leicht über Timer (Wenn du willst, ist hier wohl der einfachste und problemloseste Weg) realisieren. Wie du das machst, entnimmst du am besten der Forumssuche mit dem Suchwort "Alpha*", ich bin mir ziemlich sicher, dass es dazu schon einmal was zu lesen gab. Gruß, Max |
Re: Hintergrundfarbe eines Objekts stetig ändern
Nach jedem .Refresh müssen Paint-Message von Windows mit ProcessMessages verarbeitet werden.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer; xcolor : TColor; begin xcolor := clRed; for i:=0 to 50 do begin ListBox1.Color := xcolor; ListBox1.Refresh; Application.ProcessMessages; // Farbe ändern case xcolor of clRed: xcolor := clGreen; clGreen: xcolor := clblue; clBlue: xcolor := clRed; end; Sleep(200); if Application.Terminated then Exit; end; end; |
Re: Hintergrundfarbe eines Objekts stetig ändern
diese Variante ist in dem Fall nicht praktikabel weil die Berechnung dann nicht weiter ausgeführt wird.
|
Re: Hintergrundfarbe eines Objekts stetig ändern
Mir gehts auch nich so sehr um eine wechselnde Hintergrundfarbe für Buttons, sondern vielmehr um eine Idee, wie ich Farben irgendwie sinnvoll inkrementieren kann. Ich zeichne eine Treemap und ich würde gerne haben, das jedes Rechteck eine andere Farbe hat...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 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