Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Farbpaltte erstellen mit 255 farben (https://www.delphipraxis.net/56478-farbpaltte-erstellen-mit-255-farben.html)

mimi 6. Nov 2005 15:16


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:
  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;
aber leider sehe ich so nur die schwartz und rot töne aber die andren nicht.
dann wollte ich es mit RGB(mit der Funktion) das ging dann auch nicht:
Delphi-Quellcode:
 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;
so sehe ich leider auch nicht alle töne....

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 !!!

ripper8472 6. Nov 2005 15:22

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?

Der_Unwissende 6. Nov 2005 16:09

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:
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;
Wie gesagt, müsstest halt Palette füllen oder die jeweilige Farbe berechnen.

Gruß Der Unwissende

ripper8472 6. Nov 2005 16:16

Re: Farbpaltte erstellen mit 255 farben
 
ich versuch mal mein glueck:
(pseudocode)
Delphi-Quellcode:
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;
basiert auf der annahme, dass RGB 3,2,3 bit bekommen.

damit bekommst du kein reines weiss hin, aber reines schwarz.

mimi 6. Nov 2005 16:34

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)

ripper8472 6. Nov 2005 16:49

Re: Farbpaltte erstellen mit 255 farben
 
Zitat:

Zitat von mimi
@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)

moeglich, aber der code wird mehr als unfeierlich... ich probiers mal (->edit).

Zitat:

Zitat von mimi
und um deine ersten antwort zu beantowrten: nein ich beherrsche leider keine "bitshifting operatoren"(was ist das eigentlich genau: werden dort irgenwelche byte verschoben ?)

jep, die bits werden hin- und hergeschoben.
beispiel: 42 ist ja 00101001
42 shl 2 (shift nach links) waere dann 10100100, also 164.

edit: ich mach doch besser nen neuen post...

ripper8472 6. Nov 2005 17:43

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;

mare_crisium 6. Nov 2005 18:37

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.

mare_crisium 7. Nov 2005 22:06

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.

mimi 12. Nov 2005 18:56

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 05:11 Uhr.
Seite 1 von 3  1 23      

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