![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 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