![]() |
Farbpaltte erstellen mit 255 farben
Hallo,
ich habe schon die suche bentutz aber leider nichts passendes zu meinem problem gefunden. Ich möchte auf ein panel 255 farben dastellen und zwar so: die hellen farbtöne sollen oben sein und die dunkeln unten. Ich habe die TShape genommen und auch schon einiges versucht mein erster gedanke war:
Delphi-Quellcode:
aber leider sehe ich so nur die schwartz und rot töne aber die andren nicht.
for i:=0 to 255 do begin
Shape:=TShape.Create(self); Shape.Left:=(18)*i; Shape.top:=25; Shape.Width:=16; Shape.Height:=16; Shape.Brush.Color:=i; Shape.Parent:=ScrollBox2; end; dann wollte ich es mit RGB(mit der Funktion) das ging dann auch nicht:
Delphi-Quellcode:
so sehe ich leider auch nicht alle töne....
end;
for i:=0 to 255 do begin Shape:=TShape.Create(self); Shape.Left:=(18)*i; Shape.top:=25; Shape.Width:=16; Shape.Height:=16; if 255-i < 45 then break; Shape.Brush.Color:=RGB(0,i,255-i); Shape.Parent:=ScrollBox2; end; ich hoffe einer kann mir ein kleinen tip geben wir ich mein problem lösen kann. (aufjedenfall währe ich dankbar *G*) !!! Vielen Danke im Vorraus !!! |
Re: Farbpaltte erstellen mit 255 farben
schwierig. wenn in 8 bit 3 kanaele passen sollen, musst du 2.67 bit je kanal veranschlagen.
beherrschst du bitshifting operatoren? |
Re: Farbpaltte erstellen mit 255 farben
Hey,
ich glaube ich hab noch nicht ganz verstanden was du machen willst. Deshalb mal ein Ansatz, der sich vielleicht auch in eine völlig andere Richtung bewegt. Ich würde dir jedenfalls dazu raten, mit einer Bitmap und einem Panel zu arbeiten (Genau genommen mit einer Bitmap, einem Image und Panel). Das Image platzierst du dann auf dem Panel und schaltest Stretched auf True. Um die Farben zu erzeugen, benutzt du einfach eine Hintergrundbitmap, in der du jeder Zeile mit der jeweiligen Farbe füllst. Da du von 255 Farben sprichst, weiß ich jetzt nicht wirklich auf welche Farben du dich beziehst. Soweit ich es weiß, ist eine 8-Bit Bitmap eine mit Farbpalette, oder? Hier jedenfalls mal als kleines Beispiel (mit "Farbpalette").
Delphi-Quellcode:
Wie gesagt, müsstest halt Palette füllen oder die jeweilige Farbe berechnen.
var bitmap : TBitmap;
i : Integer; begin bitmap := TBitmap.Create; bitmap.Width := 1; bitmap.Height := 256; for i := 0 to 255 do begin // mit palette = Array[0..255] of Byte // gefüllt mit allen verwendeten Farben bitmap.Canvas.Pixels[0,i] := palette[i]; end; image.Picture.Bitmap := bitmap; bitmap.Free; end; Gruß Der Unwissende |
Re: Farbpaltte erstellen mit 255 farben
ich versuch mal mein glueck:
(pseudocode)
Delphi-Quellcode:
basiert auf der annahme, dass RGB 3,2,3 bit bekommen.
var
palette: array [0..255] of cardinal; i: integer; begin for i := 0 to 255 do begin palette[i] := (i and $E0) shl (16+0) or (i and $18) shl (8+3) or (i and $07) shl (0+5); end; end; damit bekommst du kein reines weiss hin, aber reines schwarz. |
Re: Farbpaltte erstellen mit 255 farben
@Ripper8472
du bist schon nahr dran was ich machen wollte. nur: ich möchte gerne wenn dies möglich ist: die hellen farben nach oben und die dunkeln nach unten und evlt. von jeden ton 4 farben(das wird warscheinlich mehr werden als 256 farben) und um deine ersten antwort zu beantowrten: nein ich beherrsche leider keine "bitshifting operatoren"(was ist das eigentlich genau: werden dort irgenwelche byte verschoben ?) @Der_Unwissende eine BMP möchte ich eigentlich nicht nehmen weil die frist mit zu viel speicher und die farben kann nicht so gut geändert werden(nagut mit pixels[x,y] schon aber naja) |
Re: Farbpaltte erstellen mit 255 farben
Zitat:
Zitat:
beispiel: 42 ist ja 00101001 42 shl 2 (shift nach links) waere dann 10100100, also 164. edit: ich mach doch besser nen neuen post... |
Re: Farbpaltte erstellen mit 255 farben
Liste der Anhänge anzeigen (Anzahl: 1)
ich versuch mich mal. wie versprochen, es wird haarig. und ungetestet (fast...)
Delphi-Quellcode:
var
palette: array [0..255] of cardinal; i: integer; begin for i := 0 to 255 do begin palette[i] := { wenns umgekehrt sein soll, dann [255-i] } (((i and $80) shl 0) or ((i and $10) shl 2) or ((i and $04) shl 3)) shl (16) { blau } or (((i and $40) shl 1) or ((i and $02) shl 5)) shl (8) { gruen } or (((i and $20) shl 2) or ((i and $08) shl 3) or ((i and $01) shl 5)) shl (0); { rot } end; end; |
Re: Farbpaltte erstellen mit 255 farben
Liste der Anhänge anzeigen (Anzahl: 1)
Mimi,
das mit den Farben ist nur halb so schlimm, wie's aussieht. Der Typ Tcolor enthält je ein Byte für die Farben Rot, Grün und Blau: Wenn Du eine Variable "farbe" vom Typ "Tcolor" einrichtest, dann kannst Du aus drei Bytes, "rot", "gruen" und "blau" die Farbe mit der Anweisung farbe:=rot+256*gruen+256*256*blau einstellen. Die Helligkeit wächst mit zunehmenden Werten für "rot", "gruen" und "blau". Wenn alle drei gleich 255 sind, dann bekommst Du die Farbe weiss. Die angehängt Unit zeigt, wie's geht. Das ist schon alles. Oder? Mare_crisium. |
Re: Farbpaltte erstellen mit 255 farben
Liste der Anhänge anzeigen (Anzahl: 1)
Mimi,
ich hatte übersehen, dass Du ja einen Farbverlauf von hell nach Dunkel haben wolltest. Das kriegst Du mit einem TShape nicht hin. Guck' Dir mal die angehängte Unit an. Die arbeitet mit einer TpaintBox, mit der klappt sowas eigentlich immer. Mare_crisium. |
Re: Farbpaltte erstellen mit 255 farben
leider kann ich mich nur einmal in der woche melde und das ist heute und auch morgen *G*
ist ja nett das ihr mir soviel antworten geschrieben habt doch leider wahr keine passende dabei: @mare_crisium Deine beiden unit habe ich mir angeschaut doch solche beispiele hatte ich schon auf meinen rechner und bin damit auch nicht weiter gekommen :( @ripper8472 Du hast mich anscheiend verstanden doch noch nicht vollständig Ich habe leider kein bild, ich versuche es einfach mal mit farbnamen dazustellen was ich machen mööchte: (bzw. haben möchte*G*) Ich möchte die Komplete 256 farbpaltte dastellen genau wie im Delphi Zeichenprogramm nur: ich würde gerne die dunkeln von den Hellen farben sortieren so das ich entscheiden kann welche oben bzw. unten sein sollen. Und von jeder farbe sollen 3-4 farb töne da sein. !!! Vielen Dank für eure mühe !!! :-D :-D |
Re: Farbpaltte erstellen mit 255 farben
Zitat:
Vorschlag:
Delphi-Quellcode:
farbe := RGB(rot, gruen, blau);
|
Re: Farbpaltte erstellen mit 255 farben
Liste der Anhänge anzeigen (Anzahl: 2)
Mimi,
um das hinzukriegen, was Du willst, muss man zwei Fragen beantworten: 1. Wie suche ich unter den 16 Millionen Farbtönen, die man mit 8 bit pro Farbe darstellen kann, die aus, die Du haben willst. 2. Wie zeige ich sie so an, dass man jede beliebige davon mit der Maus auswählen kann. Die zweite Frage ist am Einfachsten zu lösen: Am Besten mit einem Tdrawgrid. Die erste ist echt knifflig, weil es 1. keine einfache Möglichkeit gibt, alle Farbtöne in einer Ebene darzustellen 2. nichts so stark von der Persönlichkeit geprägt ist, die die Vorliebe oder Abneigung gegen bestimmte Farben. Farben ohne Emotionen anzugucken ist fast unmöglich. 3. das Auge ist nicht so unfehlbar, wie es uns immer weismachen will. Wenn Du die angehängte Unit zum Laufen bringst, wirst Du 255 Quadrate sehen, die jedes mit einem einheitlichen Farbton ausgefüllt sind. Es sieht aber so aus, als hätten sie einen anders gefärbten Rand. Stimmt nicht: Das Auge verstärkt Kontraste und lässt uns einen Farbsaum erscheinen wo gar keiner ist. Guck' Dir doch mal diese unit hier an. Die fertige .exe-Datei habe ich auch angehängt. Wenn alles hinhaut, kannst Du auf jedes Quadrat des TdrawGrid klicken und siehst dann die ausgewählte Farbe in einem Panel darunter. Für Muetze1 ist auch was dabei. mare_crisium |
Re: Farbpaltte erstellen mit 255 farben
Vielen Dank für eure Hilfe. Ich bin gerade am überlegen ob ich nicht die eine Farbpallete nemhen soll oder ob ich es nicht selbst versuche dieses ziel zu erreichen.
Kennst du/ihr eine deutsche Hompage die sich mit Farberechnungen ausskennt ? |
Re: Farbpaltte erstellen mit 255 farben
Mimi,
ich finde, Du bist wirklich mutig und zäh, weil Du Dich nicht einfach zufrieden gibst, sondern das verfolgst, was Du wirklich willst. Die beste deutsche Website, die ich bisher zu diesem Thema finden konnte, ist Wikipedia mit dem Suchwort "Farbraum". Von da aus kannst Du dann weiterschürfen. Aber scheu' Dich nicht im Forum weiter zu fragen, wenn Du nicht so weit kommst, wie Du willst. mare_crisium |
Re: Farbpaltte erstellen mit 255 farben
Zitat:
|
Re: Farbpaltte erstellen mit 255 farben
nach langen suchen habe ich mich entschieden die farben aus einer Liste zu laden:
![]() dort findes du die englischen und deutschen farbnamen und den farbwert in einer tabbele aufgelistet. |
Re: Farbpaltte erstellen mit 255 farben
Liste der Anhänge anzeigen (Anzahl: 3)
Das mit dem Array (Farbpalette) wäre natürlich noch 'ne Möglichkeit - statt die Farben zu berechnen diese einfach aus dem Array verwenden. (bei so "wenigen" Farben wäre dieses noch vertretbar ... 256 * 4 = 1 KB)
Und der Vorteil dabi wäre auch noch, daß du die Farbwrte dann völlig frei positionieren kannst. (ohne eine passende Formel zu finden) [add] also passend zu deiner Liste [add2] dort hast du auch noch einige ![]()
Delphi-Quellcode:
Const ColorArray: Array[0..255] of TColor = ($000000, ... , $FFFFFF);
Oder du muß es denn unbedingt eine Farbpalette mit festen Werten sein? (siehe Anhänge) |
Re: Farbpaltte erstellen mit 255 farben
danke für den link. die beispiele waren für mich nicht
allerdink habe ich ein problem mit dem umwanden von #00FFFF nach einen intereger. habe schon gesucht und bin dabei auf folgende funktion gestoßen:
Delphi-Quellcode:
aber irgenwie es kommt eine fehlermeldung das der hex colorer wert kein gültiger interger sei :(
function HexToColor(St: String): TColor;
begin Result := TColor(StrToInt(St)); end; ich werde mal dein link testen. |
Re: Farbpaltte erstellen mit 255 farben
Ersetze das # durch $. (#00FFFFFF zu $00FFFFFF)
zB.:
Delphi-Quellcode:
function HexToColor(St: String): TColor;
begin if St[1] = '#' then St[1] := '$'; Result := TColor(StrToInt(St)); end; |
Re: Farbpaltte erstellen mit 255 farben
Besten Dank an alle: hat geklaptt ich werde die datei noch auf den neuen link umstellten und dann ist diese funktion fertig *G*
|
Re: Farbpaltte erstellen mit 255 farben
anmerkung:
es sind nur 140 Farben statt 256 farben aber das ist ersteinmal nicht so wichtig troztdem vielen dank ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 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