Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   256 Farben (https://www.delphipraxis.net/209696-256-farben.html)

juniorA 11. Jan 2022 11:46

256 Farben
 
Ich habe einen Wertebereich von 0..255. Jeder Wert soll einer Farbe entsprechen. Wie bekomme ich es hin, dass 0 z.B. weis und 255 schwarz ist oder gibt es schon eine vordefinierte Konstanten?

KodeZwerg 11. Jan 2022 11:51

AW: 256 Farben
 
Delphi-Quellcode:
var
  Farbe: TColor;
begin
  Farbe := clWhite;
  Farbe := clBlack;
  // usw, zu finden in Vcl.Graphics.pas
Farben bestehen aus R G B, jeweils 0..255 ist möglich
Also
Delphi-Quellcode:
 Farbe := RGB(hier drei mal werte von 0 bis 255);

Klaus01 11. Jan 2022 12:03

AW: 256 Farben
 
Zitat:

Zitat von KodeZwerg (Beitrag 1500437)
Farben bestehen aus R G B, jeweils 0..255 ist möglich
Also
Delphi-Quellcode:
 Farbe := RGB(hier drei mal werte von 0 bis 255);

.. dann kommen aber locker mehr als 256 Farben raus.
Grüße
Klaus

KodeZwerg 11. Jan 2022 12:04

AW: 256 Farben
 
ja, 65535, normal oder?
welche kombination er nimmt ist ihm überlassen.

Klaus01 11. Jan 2022 12:08

AW: 256 Farben
 
nun, aber der TE hat einen Farbraum von 256 Farben
ok

himitsu 11. Jan 2022 12:29

AW: 256 Farben
 
Stichwort: Farbtabelle



Nja, die Frage wäre bestimmt einfacher zu beantworten, wenn man wüsste, worum es eigentlich geht.

Sinspin 11. Jan 2022 12:36

AW: 256 Farben
 
Zitat:

Zitat von KodeZwerg (Beitrag 1500441)
ja, 65535, normal oder?
welche kombination er nimmt ist ihm überlassen.

Genau, 256*256*256 = 65535 ;-)

Zitat:

Zitat von juniorA (Beitrag 1500436)
Ich habe einen Wertebereich von 0..255. Jeder Wert soll einer Farbe entsprechen. Wie bekomme ich es hin, dass 0 z.B. weis und 255 schwarz ist oder gibt es schon eine vordefinierte Konstanten?

Eine Farbe besteht unter Windows aus 4 Bytes. Ein Byte dient als Schalter für bestimmte Eigenschaften der Farbe, 3 Bytes bestimmen die Farbe. Der Typ für Farbe in Delphi ist TColor.

Willst Du 256 verschiedene Farben definieren brauchst Du ein Array mit 256 Werten vom Typ TColor.

Delphi hat eine ganze Reihe Konstanten für vordefinierte Farbwerte. Ansonsten kannst Du dir auch selber Farben mit Hilfe der drei Grundfarben erstellen.
Zum Beispiel so:
Delphi-Quellcode:
Farbe := TColor(RGB(255, 255, 0)); // Gelb

KodeZwerg 11. Jan 2022 12:50

AW: 256 Farben
 
Zitat:

Zitat von himitsu (Beitrag 1500448)
Stichwort: Farbtabelle

Noch eins: ColorPicker, so brauch er sich keine Gedanken machen :-)

sakura 11. Jan 2022 13:00

AW: 256 Farben
 
Zitat:

Zitat von Sinspin (Beitrag 1500450)
Zitat:

Zitat von KodeZwerg (Beitrag 1500441)
ja, 65535, normal oder?
welche kombination er nimmt ist ihm überlassen.

Genau, 256*256*256 = 65535 ;-)

Ähm... neee :mrgreen: Eher 16777216....

...:cat:...

KodeZwerg 11. Jan 2022 13:11

AW: 256 Farben
 
klar 16 millionen... was ging mir vorhin nur durch den kopf??? :wall: Mein Fehler!

juniorA 11. Jan 2022 13:20

AW: 256 Farben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das Ergebnis sollen die Farben der Farbtabelle im Anhang werden.
Der Wert 1 steht für weis und 255 für schwarz.

KodeZwerg 11. Jan 2022 13:34

AW: 256 Farben
 
hallo, schau mal dein bild an, dort steht alles was benötigt ist. (farbwert in hex = 3 byte)

juniorA 11. Jan 2022 13:49

AW: 256 Farben
 
Mit den HEX-Werte habe ich gesehen. Heist es jetzt alle 256 HEX wert als Konstante ablegen oder gibt es bei den Werte einen festes System?

freimatz 11. Jan 2022 14:30

AW: 256 Farben
 
Wie kommst Du auf die 256 - oder 0 oder 255?
In der farbigen Grafik sehe ich da nichts davon. Soll die Anordnung auch so sein wie in der Grafik? Willst Du die Grafik mit einem Programm erzeugen?

KodeZwerg 11. Jan 2022 14:50

AW: 256 Farben
 
Zitat:

Zitat von juniorA (Beitrag 1500459)
Mit den HEX-Werte habe ich gesehen. Heist es jetzt alle 256 HEX wert als Konstante ablegen oder gibt es bei den Werte einen festes System?

Das "feste System" bist Du :-)

In Delphi würde man es eventuell so machen:

Delphi-Quellcode:
const
  Farben : array [0..255] of TColor = (
    $EEEEEE,
    $0D0D0D,
    // usw usw usw usw bis du insgesamt alles hast was du brauchst
    );
Dann kannst du über dieses Array bequem wählen.

Delphi-Quellcode:
var
  Farbe : TColor;
begin
  Farbe := Farben[123];

himitsu 11. Jan 2022 15:13

AW: 256 Farben
 
Und da es hier ein paar Muster in den Zahlenfolgen gibt, kann man mit einer Hand voll Schleifen auch die 256 Farbwerte füllen/generieren lassen.

Blup 12. Jan 2022 10:37

AW: 256 Farben
 
Die Grafik "Farbtabelle" hat übriegens 276 Einträge, wenn ich mich mal nicht verzählt hab ...

sakura 12. Jan 2022 10:48

AW: 256 Farben
 
Zitat:

Zitat von Blup (Beitrag 1500492)
Die Grafik "Farbtabelle" hat übriegens 276 Einträge, wenn ich mich mal nicht verzählt hab ...

Sehr aufmerksam ;-)

...:cat:...

Blup 12. Jan 2022 15:27

AW: 256 Farben
 
Mal so zur Entspannung:
Delphi-Quellcode:
unit Main;

interface

uses
  Vcl.Graphics, Vcl.GraphUtil, Vcl.Forms, System.Classes, Vcl.Controls, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    procedure FormCreate(Sender: TObject);
    procedure PaintBox1Paint(Sender: TObject);
  private
    { Private-Deklarationen }
    FColorArr: array of TColor;
    procedure DrawColorItem(ACanvas: TCanvas; x, y: Integer; AColor: TColor);
    procedure DrawColorTabelle(ACanvas: TCanvas; x0, y0: Integer);
    procedure InitColorArr;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  InitColorArr;
end;

procedure TForm1.DrawColorItem(ACanvas: TCanvas; x, y: Integer; AColor: TColor);
const
  {Größe des Quadrat}
  Cdx1 = 20;
  Cdy1 = 20;
  {relative Position der Schrift}
  Cdx2 = 24;
  Cdy2 = 02;
begin
  {Umrandung}
  ACanvas.Pen.Style := psSolid;
  ACanvas.Pen.Mode := pmCopy;
  ACanvas.Pen.Color := clBlack;
  ACanvas.Pen.Width := 1;
  {Füllung}
  ACanvas.Brush.Style := bsSolid;
  ACanvas.Brush.Color := AColor;
  {Quadrat}
  ACanvas.Rectangle(x, y, x + Cdx1, y + Cdy1);

  {Hintergrund transparent}
  ACanvas.Brush.Style := bsClear;
  {Schrift}
  ACanvas.Font.Color := clBlack;
  ACanvas.Font.Size := 9;
  ACanvas.Font.Name := 'Courier New';
  ACanvas.TextOut(x + Cdx2, y + Cdy2, Copy(ColorToWebColorStr(ColorToRGB(AColor)), 2));
end;

procedure TForm1.DrawColorTabelle(ACanvas: TCanvas; x0, y0: Integer);
const
  {Breite der Spalten und Höhe der Zeilen}
  Cdx = 80;
  Cdy = 24;
var
  x, y, n: Integer;
begin
  n := 0;
  for x := 0 to 7 do
  begin
    if (x = 0) or (x = 7) then
    begin
      for y := 3 to 32 do
      begin
        DrawColorItem(PaintBox1.Canvas, x0 + x * Cdx, y0 + y * Cdy, FColorArr[n]);
        Inc(n);
      end;
    end
    else
    begin
      for y := 0 to 35 do
      begin
        DrawColorItem(PaintBox1.Canvas, x0 + x * Cdx, y0 + y * Cdy, FColorArr[n]);
        Inc(n);
      end;
    end;
  end;
end;

procedure TForm1.InitColorArr;
var
  i: Integer;
begin
  SetLength(FColorArr, 276);

  for i := Low(FColorArr) to High(FColorArr) do
    FColorArr[i] := TColor(Random(256*256*256));
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  DrawColorTabelle(PaintBox1.Canvas, 30, 10);
end;

end.

freimatz 13. Jan 2022 12:02

AW: 256 Farben
 
Du sollst doch nicht seine Hausaufgaben lösen.

blawen 13. Jan 2022 12:16

AW: 256 Farben
 
Zitat:

Zitat von freimatz (Beitrag 1500535)
Du sollst doch nicht seine Hausaufgaben lösen.

Dies reguliert sich spätestens dann von selber, wenn nach der Funktionsweise des Codes gefragt wird ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 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