AGB  ·  Datenschutz  ·  Impressum  







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

Farbauswahl

Ein Thema von Matze · begonnen am 21. Aug 2003 · letzter Beitrag vom 22. Aug 2003
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Farbauswahl

  Alt 22. Aug 2003, 10:09
Zitat von Matze:
....Naja, jetzt hab ich's ja. So sieht's aus:
Wie hast Du es denn nun gemacht?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von overmoon
overmoon

Registriert seit: 8. Aug 2003
Ort: Passau
51 Beiträge
 
Delphi 6 Personal
 
#12

Re: Farbauswahl

  Alt 22. Aug 2003, 10:09
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.

overmoon

ps: ohh, zu spät....
"Habe Mut, dich deines eigenen Verstandes zu bedienen." (Immanuel Kant)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Farbauswahl

  Alt 22. Aug 2003, 10:22
Zitat von Sharky:
Wie hast Du es denn nun gemacht?
Betriebsgeheimnis.

Das ist einfach eine lange procedure, mehr nicht.

Muss aber noch was ändern, da ich die PaintBox, auf der es ist, nicht kleiner machen kann, da sonst Farben fehlen.

Gruß Matze.
  Mit Zitat antworten Zitat
Illuminator-23-5
(Gast)

n/a Beiträge
 
#14

Re: Farbauswahl

  Alt 22. Aug 2003, 10:35
codevorschlag:
Delphi-Quellcode:
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;
müsste theoretisch funzen
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Farbauswahl

  Alt 22. Aug 2003, 10:51
Da passiert nichts.

Height ist dann 10 und Width: 0.
  Mit Zitat antworten Zitat
Illuminator-23-5
(Gast)

n/a Beiträge
 
#16

Re: Farbauswahl

  Alt 22. Aug 2003, 10:57
denkfehler:
Delphi-Quellcode:
PaintBox1.Width := (255 div step)*(255 div step)*(255 div step) DIV
lines
PaintBox1.Height := 5*lines;
müsst jetzt funzen, kanns aber nicht probieren
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Farbauswahl

  Alt 22. Aug 2003, 11:15
Danke, aber dann ist
Height: 5
Width: 1000
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#18

Re: Farbauswahl

  Alt 22. Aug 2003, 16:33
Da es sich ja um eine Farbauswahl handelt, kommt sicherlich gleich die Frage wie ich die Farbe unterm Mauscursor auslesen kannst
Dazu solltest du dir GetRValue, GetGValue und GetBValue in der Hilfe anschauen
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Farbauswahl

  Alt 22. Aug 2003, 16:43
So blöd bin ich auch nicht.

Code:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Panel1.Color:=PaintBox1.Canvas.Pixels[x,y];
end;
Gruß Matze
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#20

Re: Farbauswahl

  Alt 22. Aug 2003, 16:56
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
Sorry
Alexander
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 00:37 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