AGB  ·  Datenschutz  ·  Impressum  







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

Farbanimation mit TCanvas

Ein Thema von DerHaushaltsProfi · begonnen am 11. Mai 2015 · letzter Beitrag vom 13. Mai 2015
Antwort Antwort
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Delphi verändern

  Alt 12. Mai 2015, 21:22
@Harry Stahl gaaaaanz so komplex muss es nun auch nicht sein ;D
Ich weiß nicht, ob Du mal in den Source reingesehen hast, insofern nur noch der Hinweis, dass der von mir erstellte Source-Code aus ganzen 4 Zeilen besteht:

Delphi-Quellcode:
procedure TForm11.Button1Click(Sender: TObject);
begin
  ColorAnimation1.Enabled := false;
  ColorAnimation1.Enabled := true;
end;

procedure TForm11.ColorAnimation1Process(Sender: TObject);
begin
  Ellipse1.Fill.Color := Rectangle2.Fill.Color;
  Ellipse4.Fill.Color := Rectangle2.Fill.Color;
end;
Das würde ich nicht unbedingt als komplex berzeichnen. Aber man kann das natürlich auch auf die "harte Tour" machen, zum Lernen ist das sicher nicht verkehrt.

Zu Deiner Vorstellung für die VCL-Lösung: Du solltest das Zeichnen der Grafik im OnPaint-Event der Paintbox vornehmen. Denn was Du derzeit malst, ist nur "flüchtig" (minimiere mal nach dem Klick auf den Button das Formular, Deine Zeichnung ist dann verschwunden).

Besser wäre es hier Variabeln anzulegen, diese in gewissen Zeitabständen zu aktualisieren und dann jeweils auch die Paintbox aktualisieren zu lassen.

Und zu TColor hat Dir Popov gerade die entscheidenden Hinweise gegeben.

Geändert von Harry Stahl (12. Mai 2015 um 22:25 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Delphi verändern

  Alt 12. Mai 2015, 21:36
Hier etwas ganz simples. Noch einfacher geht es nicht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  Farben: array[0..9] of TColor = ($00FF0000, $00E6001A, $00CC0033, $00B2004C,
    $00990066, $00800080, $00660099, $004C00B2, $003300CC, $001A00E6);
var
  i: Integer;
begin
  for i := 0 to 9 do
  begin
    Panel1.Color := Farben[i];
    Sleep(100);
    Application.ProcessMessages;
  end;
end;
Die Konstante Farben beinhaltet 10 Farben in einem Array. Die erste Farbe ist blau, die letzte ist rot. Die anderen Farben dazwischen sind Abstufungen. Dann nur noch die Farben in Reihe aufrufen.

Die Version verlangt am Anfang mehr Arbeit, da man die Farben erst von Hand berechnen muss, später ist es dafür ganz simpel.
  Mit Zitat antworten Zitat
DerHaushaltsProfi

Registriert seit: 18. Jan 2015
14 Beiträge
 
#3

AW: Delphi verändern

  Alt 13. Mai 2015, 10:07
Danke an alle für die vielen Versuche mir zu helfen!

Popov mir gefällt deine "ganz simple" Lösung echt gut ich werde die auch verwenden!

mfg
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#4

AW: Delphi verändern

  Alt 13. Mai 2015, 11:36
Popov mir gefällt deine "ganz simple" Lösung echt gut ich werde die auch verwenden!
Vor allem bietet diese Lösung mit dem Farb-Array eine bequeme Möglichkeit die Änderungen der Farbwerte so zu gestalten, wie sie beim chemischen Experiment auch tatsächlich vorkommen.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Delphi verändern

  Alt 13. Mai 2015, 11:39
Wenn man es später aber evtl. für verschiedene Farben benötigt oder die Stufen feiner braucht, dann wird man es berechnen müssen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#6

AW: Delphi verändern

  Alt 13. Mai 2015, 11:49
Wenn man es später aber evtl. für verschiedene Farben benötigt oder die Stufen feiner braucht, dann wird man es berechnen müssen.
Dann musst Du aber auch für jede erdenkliche Kombination der mischbaren chemischen Elemente den entsprechenden Algo programmieren.

Denn Substanz A mit B gibt eine andere Farbübergangstabelle als A mit C oder B mit C oder B mit C und A.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Delphi verändern

  Alt 13. Mai 2015, 12:04
Ok das macht Sinn.

Ich hatte es ursprünglich so verstanden, dass ein fließender Wechsel von Farbe A zu B gewünscht ist. Und das könnte man m.E. durch Zerlegung in Rot, Grün und Blau und prozentuale Annäherung zur Zielfarbe hin erreichen.

[EDIT]
Diesen fließenden Wechsel könnte man natürlich benutzen, um von einer Array-Farbe zur nächsten zu wechseln. Dann hätte man einen sehr fließenden optischen Farbwechsel und keine Farbsprünge.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (13. Mai 2015 um 12:07 Uhr)
  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 18:20 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