![]() |
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 |
Re: Programmierung eines Farbverlaufs
@ Alex,
das muß ins OnPaint rein. siehe ![]() @miri: man sollte doch mal öfters den IE aktualisieren :oops: http://www.delphipraxis.net/images/common/divider.jpg ![]() ![]() ![]() |
Re: Programmierung eines Farbverlaufs
Zitat:
Ich war schneller ;) @himitsu: Ich teste mal deine Mega-Signatur :mrgreen: http://www.delphipraxis.net/images/common/divider.jpg ![]() ![]() ![]() |
Re: Programmierung eines Farbverlaufs
[OT]
meine Zweitsignatur ist ja nur da, weil man ja keine DP-fremden Images mehr in die Signatur einbinden kann. @Matze, pass nur auf, dass ich nicht wegen Traffikklau's auf dich zu komme. PS: Und achte auch darauf, dass du jetzt keine Copyright- und Patentrechte brichst. :mrgreen: [/OT] |
Re: Programmierung eines Farbverlaufs
Ups, ich muss wohl die Sig weglassen ;)
Pass auf, dass dich der Cheffe nicht killt :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 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-2025 by Thomas Breitkreuz