![]() |
Programmierung eines Farbverlaufs
Hi,
hat einer von euch ne Ahnung, wie ich einen Farbverlauf proggen kann; ich hab nämlich hier schon alles abgesucht, aber nirgendwo ist eine Anleitung oder ein Beitrag, wo drin steht, wie ich einen ganz normalen Farbverlauf, von einer Farbe in eine andere Farbe, proggen kann; :wall: :wall: DelphiUser7 |
Re: Programmierung eines Farbverlaufs
Überleg mal so: Farben werden als Kombination von roten, grünen und blauen Farbwerten dargestellt, jeweils als Zahlen zw. 0 und 255. Mit einer Schleife kannst du die Komponentenwerte erhöhen und dann die zugehörige Farbe anzeigen.
|
Re: Programmierung eines Farbverlaufs
:hi: nochmals
Delphi-Quellcode:
var
* i* : Integer; * s : array[0..2] of Byte; * e : array[0..2] of Byte; * d : array[0..2] of single; begin * s[0] := GetRValue(Color1); * s[1] := GetGValue(Color1); * s[2] := GetBValue(Color1); * e[0] := GetRValue(Color2); * e[1] := GetGValue(Color2); * e[2] := GetBValue(Color2); * for i := low(s) to high(s) do d[i] := (e[i]-s[i]) / Width; * for i := 0 to Width do * begin * * Canvas.Pen.Color := rgb( Round(s[0] + i * d[0]), * * * * * * * * * * * * * * *Round(s[1] + i * d[1]), * * * * * * * * * * * * * * *Round(s[2] + i * d[2]) ); * * Canvas.MoveTo(i,0); * * Canvas.LineTo(i,Height); * end; end; |
Re: Programmierung eines Farbverlaufs
Vielen Dank;
habs gerade getestet, und es funzt!; Gruss DelphiUser7 |
Re: Programmierung eines Farbverlaufs
Ja, das war jetzt horizontal, what about 'vertikal'?;
Ich hab schon mal probiert, was passiert, wenn ich einfach überall das Gegenteil, also anstatt Height 'Width' reinschreibe; dann zeigt er mir eine bunt colorierte Leiste an, aber keinen vertikalen Farbverlauf; DelphiUser7 |
Re: Programmierung eines Farbverlaufs
:hi:
Delphi-Quellcode:
for i := 0 to Height do
begin Canvas.Pen.Color := rgb( Round(s[0] + i * d[0]), Round(s[1] + i * d[1]), Round(s[2] + i * d[2]) ); Canvas.MoveTo(0,i); Canvas.LineTo(Width,i); end; |
Re: Programmierung eines Farbverlaufs
mal ne frage zu diesem source:
Delphi-Quellcode:
und zwar hab ich den bei form.create reingebracht aber es passiert nix mit der farbe.was muss ich hier ändern?
var
i : Integer; s : array[0..2] of Byte; e : array[0..2] of Byte; d : array[0..2] of single; begin s[0] := GetRValue(clred); s[1] := GetGValue(clgreen); s[2] := GetBValue(clblue); e[0] := GetRValue(clred); e[1] := GetGValue(clgreen); e[2] := GetBValue(clblue); for i := low(s) to high(s) do d[i] := (e[i]-s[i]) / Width; for i := 0 to Width do begin Form1.Canvas.Pen.Color := rgb( Round(s[0] + i * d[0]), Round(s[1] + i * d[1]), Round(s[2] + i * d[2]) ); Form1.Canvas.MoveTo(i,0); Form1.Canvas.LineTo(i,Height); end; danke alex |
Re: Programmierung eines Farbverlaufs
Gib es einfach in das OnPaint-Ereignis.
|
Re: Programmierung eines Farbverlaufs
ok danke geht
|
Re: Programmierung eines Farbverlaufs
:hi:
Mal den Verluaf doch auf ein Bitmap, und kopiere dieses beim OnPaint der Form auf das Canvas der selbigen (oder male es jedesmal im onpaint). was ähnliches gibts ![]() mfg Tobias |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 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