Farbauswahl
Hi!
Wie kann ich so eine Farbauswahl proggen, wie sie hier im Forum verwendet wird, um Texte zu schreiben. Geht das überhaupt? Gruß Matze |
Re: Farbauswahl
hoi, ich würd sagen mit dem ColorDialog, oder meinst du genauso wie hie rim forum also ohne extra dialog? (dann weiss ichs leider nicht ^^)
|
Re: Farbauswahl
Ich meinte ohne Dialog, so wie hier. :mrgreen:
Ich nehme sonst aber den Color-Dialog, der ist auch OK, aber anders wär's besser. :wink: |
hmm,
gernerie dir eben eine Farbleiste und fang die onmousemoves ab
|
Re: Farbauswahl
Danke!
Aber wie generiere ich die? Wie mach ich den Farbverlauf? Gruß Matze |
hmm,
how about a paintbox zB.
und da malst du einfach bunte Striche drauf. |
Re: Farbauswahl
Das ist nicht das Problem. Das Problem ist, wie ich einen Farbverlauf hinbekomme, indem alle Farben enthalten sind.
Ich kann es nur so, dass ich eine Startfarbe angebe und eine Endfarbe, dann wird der Verlauf gezeichnet, aber alle Farben sind dort natürlich nicht drin. :( ruß Matze |
Re: Farbauswahl
du könntest 3 verschachtelte for-schleifen nehmen, je eine für alle 3 RGB-werte!
|
Re: Farbauswahl
Danke für den Tipp Illu! :D
Das werde ich mal probieren... |
Re: Farbauswahl
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!
Nochmals danke!!! Hat ganz schön lang gedauert, bis ich's hinbekommen hab (bin halt Anfänger :lol: ) Das ist ja ein Mega-Code! :mrgreen: Gruß Matze Naja, jetzt hab ich's ja. So sieht's aus: |
Re: Farbauswahl
Zitat:
|
Re: Farbauswahl
Einen Verlauf, in dem alle Farben enthalten sind, das wird recht schwierig;
ich würde fast sagen, das geht nicht. Man muss sich nur folgendes Überlegen: - Jede Farbe ist ein Tripel bestehend aus den drei Teilen rot, grün und blau - Für rot, grün und blau gibt es jeweils 256 Möglichkeiten (0..255) Das Ergibt: 256*256*256 = 16777216 verschiedene Farben ! Würde man jedem Pixel eine andere Farbe geben und ein Panel nehmen, das 1024 Pixel breit ist, so müsste es 16777216 / 1024 = 16384 Pixel hoch sein. Das wird wohl auch auf dem größten Monitor schwierig. Also muss man die Anzahl der Farben verringern oder eine andere Darstellungsart finden. Ich denke mal in die erste Richtung weiter. Verringern wir z.B. auf 16 Abstufungen innerhalb von rot, grün und blau, so haben wir nur noch: 16*16*16 = 4096 Farben. Diw könnte man "Problemlos" auf einem Panel von 128*32 Pixel Größe darstellen. Ich finde eine Aufteilung in 18 Schritte sinnvoll: r,g,b € F = {0,15,30,45,60,75,90,105,120,135,150,165,180,195,2 10,225,240,255} |F| = 5832 = 2^3 * 3^6 Diese könnte man z.B. in einem Bereich von 216*27 Pixeln alle darstellen, was einen Bereich von einer Größe ist, der mir sinnvoll erscheint. Nun müsste man sich jetzt überlegen, wie man alle möglichen Tripel (r,g,b) mit r,g,b € F darstellt. Dafür bietet sich die Möglichkeit über die drei For-Schleifen an, die Illuminator-23-5 vorgeschlagen hat. :hello: overmoon ps: ohh, zu spät.... |
Re: Farbauswahl
Zitat:
Das ist einfach eine lange procedure, mehr nicht. :wink: Muss aber noch was ändern, da ich die PaintBox, auf der es ist, nicht kleiner machen kann, da sonst Farben fehlen. Gruß Matze. |
Re: Farbauswahl
codevorschlag:
Delphi-Quellcode:
müsste theoretisch funzen
procedure TForm1.Button1Click(Sender: TObject);
const step = 25; lines = 1; var r, g, b, x: integer begin PaintBox1.Width := (255 div step)*(255 div step)*(255 div step) mod lines; PaintBox1.Height := 5*(lines + 1); x := 0; for r := 0 to 255 div step do for g := 0 to 255 div step do for b := 0 to 255 div step do with PaintBox1 do begin inc(x); Canvas.Brush.Color := RGB(r*step, g*step, b*step); Canvas.Pen.Color := RGB(r*Step, g*step, b*step); Canvas.MoveTo(x mod lines, x div lines); Canvas.LineTo(x mod lines, x div lines + 5); end; end; |
Re: Farbauswahl
Da passiert nichts. :mrgreen:
Height ist dann 10 und Width: 0. |
Re: Farbauswahl
denkfehler:
Delphi-Quellcode:
müsst jetzt funzen, kanns aber nicht probieren
PaintBox1.Width := (255 div step)*(255 div step)*(255 div step) DIV
lines PaintBox1.Height := 5*lines; |
Re: Farbauswahl
Danke, aber dann ist
Height: 5 Width: 1000 |
Re: Farbauswahl
Da es sich ja um eine Farbauswahl handelt, kommt sicherlich gleich die Frage wie ich die Farbe unterm Mauscursor auslesen kannst :mrgreen:
Dazu solltest du dir GetRValue, GetGValue und GetBValue in der Hilfe anschauen ;-) |
Re: Farbauswahl
So blöd bin ich auch nicht. :wink:
Code:
Gruß Matze
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin Panel1.Color:=PaintBox1.Canvas.Pixels[x,y]; end; |
Re: Farbauswahl
Habe ich auch nciht gesagt, nur habe ich gerade jemand anders per ICQ gesagt wie er die einzelnen RGB-Werte rausbekommt, dann den Thread gesehen und dann gleich gepostet :mrgreen:
Sorry |
Re: Farbauswahl
War auch nicht so ernst gemeint. :wink:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz