AGB  ·  Datenschutz  ·  Impressum  







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

Unterschiedliche Farben generieren

Ein Thema von Marc · begonnen am 24. Jun 2004 · letzter Beitrag vom 24. Jun 2004
Antwort Antwort
Marc

Registriert seit: 23. Jul 2003
19 Beiträge
 
Delphi 7 Personal
 
#1

Unterschiedliche Farben generieren

  Alt 24. Jun 2004, 18:10
Hallo,

ich erstelle gerade ein Diagramm. Kann mir jemand sagen wie ich X unterscheidbare Farben generieren kann? Mit random habe ich es schon versucht, aber da kommen öfters gleich bzw. ähnlichfarbige Werte raus.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Unterschiedliche Farben generieren

  Alt 24. Jun 2004, 18:12
Mach die doch eine Sammlung von ein paar genügend unterschiedlichen Farben von Hand, aus welcher du dann zufällig eine greifst. Die normale (gute alte ) 16-Farben-Palette ist z.B. garnet so übel *g*
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Unterschiedliche Farben generieren

  Alt 24. Jun 2004, 18:25
ich hatte da schonmal nen source, installier grad Delphi neu - 15 Minuten warten und ich poste dir den source
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Unterschiedliche Farben generieren

  Alt 24. Jun 2004, 18:53
Hier der Source
Delphi-Quellcode:
function IsSameConsideringRange(Val1, Val2: Integer; ARange: Word = 5): Boolean;
begin
  result := (Val1 >= Val2 - ARange) and (Val1 <= Val2 + ARange);
end;

procedure TForm1.Button1Click(Sender: TObject);
var LRed, LGreen, LBlue, LMindestabstand: Byte;
    LFarben: Array of TColor;
    LIsNew: Boolean;
    LCount1, LCountFarben: Integer;
begin
  LMindestabstand := 60; //Legt Fest wie ähnlich sich die farben sein dürfen. Je kleiner die Zahl destso ähnlicher dürfen sich die farben werden. Man sollte allderdings bedenken das es zu einer Endlosschleife werden kann wenn man den wert zu hoch setzt weil es irgendwann bei zu viel farben keine farbe mehr gibt die dann anders aussieht
  for LCountFarben := 1 to 40 do //anzahl der Farben die erzeugt werden soll
  begin
    repeat
      LIsNew := True;
      LRed := Random(256);
      LGreen := Random(256);
      LBlue := Random(256);
      for LCount1 := 0 to length(LFarben) - 1 do
      begin
        if IsSameConsideringRange(LRed, GetRValue(LFarben[LCount1]), LMindestabstand) and
           IsSameConsideringRange(LGreen, GetGValue(LFarben[LCount1]), LMindestabstand) and
           IsSameConsideringRange(LBlue, GetBValue(LFarben[LCount1]), LMindestabstand) then
        begin
          LIsNew := False;
          break;
        end;
      end;
    until LIsNew;
    setlength(LFarben, length(LFarben)+1);
    LFarben[length(LFarben)-1] := RGB(LRed, LGreen, LBlue);
  end;

  //farben testweise auf Image1 ausgeben
  image1.Picture.Bitmap.Width := image1.Width;
  image1.Picture.Bitmap.Height := image1.Height;
  for LCount1 := 0 to length(LFarben)-1 do
  begin
    Image1.Picture.Bitmap.Canvas.Brush.Color := LFarben[LCount1];
    Image1.Picture.Bitmap.Canvas.FillRect(Rect(0, LCount1 * 10, Image1.Width, LCount1 * 10 + 10));
  end;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 15:09 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