Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Farbpalette erstellen? (https://www.delphipraxis.net/16386-farbpalette-erstellen.html)

mirage228 16. Feb 2004 13:15


Farbpalette erstellen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich wollte gerne eine Farbpalette zeichnen, wie im Anhang zu sehen ist.
Ich hab versucht den Code für einen normalen Farbverlauf zu modifizieren, aber so eine ganze Palette scheint doch etwas komplizierter zu sein...
Wie stelle ich das am Besten an?

mfG
mirage228

Matze 16. Feb 2004 13:20

Re: Farbpalette erstellen?
 
Hi!

Ich weiß nicht, wie das geht.


Für was brauchst du es denn?

Falls du's für ne Farbauswahl benötigst, kannst du auch ein normales Bitmap nehmen und die Farbe unter dem Cursor abfragen.

mirage228 16. Feb 2004 13:23

Re: Farbpalette erstellen?
 
Ich wollte mir eine kleine eigene Komponente basteln, die eine solche Palette darstellen kann. ^^

mfG
mirage228

APP 16. Feb 2004 13:24

Re: Farbpalette erstellen?
 
Hallo mirage228,

Du könntest auch den TColorDialog von Delphi verwenden, ist halt ein Dialog...

[EDIT] Ups, habe Deine Antwort zu spät gesehen [/EDIT]

mirage228 16. Feb 2004 13:26

Re: Farbpalette erstellen?
 
Hi App,

genau das wollte ich umgehen. Ich wollte nicht den nutzer einen eigenen Dialog aufrufen lassen, sondern es halt mit einer eigenen Komponente machen, die ich überall auf mein Form platzieren kann.

mfG
mirage228

CalganX 16. Feb 2004 13:26

Re: Farbpalette erstellen?
 
Hi,
du musst mal mit den HSB- und RGB-Werten rumprobieren.
Lass einfach eine Schleife durchlaufen und je nachdem, wo die 6 Werte (h, s, b, r, g, b) gerade sind, kannst du mal versuchen eine Farbe ausgeben.
Ist zwar Trial&Error, aber hilft immer... :)

Chris

Daniel 16. Feb 2004 13:27

Re: Farbpalette erstellen?
 
Kannst ja mal schauen, wie Mike Lischke dies für seine Komponente realisiert hat. Sein Download beinhaltet den Source. Die Optik ist zwar eine leicht Andere, aber vielleicht inspiriert Dich diese Herangehensweise ja zu irgendetwas. ;-)

http://www.delphi-gems.com/Controls.php#ColorPB

mirage228 16. Feb 2004 13:34

Re: Farbpalette erstellen?
 
Zitat:

Zitat von Daniel
Kannst ja mal schauen, wie Mike Lischke dies für seine Komponente realisiert hat. Sein Download beinhaltet den Source. Die Optik ist zwar eine leicht Andere, aber vielleicht inspiriert Dich diese Herangehensweise ja zu irgendetwas. ;-)

http://www.delphi-gems.com/Controls.php#ColorPB

Danke, werde ich mir mal anschauen ^^

mfG
mirage228

neolithos 16. Feb 2004 14:59

Re: Farbpalette erstellen?
 
Delphi-Quellcode:
procedure TForm1.cmdRGBtoHSVClick(Sender: TObject);
var iDelta,
    iMax,
    iMin,
    h, s, v : Double;
    r, g, b : Byte;
begin
  r := StrToInt(txtR.Text);
  g := StrToInt(txtG.Text);
  b := StrToInt(txtB.Text);


  iMax := MaxIntValue([R, G, B]);
  iMin := MinIntValue([R, G, B]);
  iDelta := iMax - iMin;
  h := 0;
  if iDelta > 0 then
     begin
       if r = iMax then h := (b - g) / iDelta;
       if b = iMax then h := (g - r) / iDelta + 2;
       if g = iMax then h := (r - b) / iDelta + 4;
     end;
  h := h * 60;
  if h < 0 then h := h + 360;
  if iMax = 0 then
     s := 0
  else
     s := iDelta / iMax;
  v := iMax / 255;

  txtH.Text := FloatToStr(h);
  txtS.Text := FloatToStr(s);
  txtV.Text := FloatToStr(v);
end;

const
  cdwKreis : array [0..5] of Cardinal = ($0000FF, $FF00FF, $FF0000,
    $FFFF00, $00FF00, $00FFFF);

procedure TForm1.cmdHSVtoRGBClick(Sender: TObject);
var iColor,
    iNext : Integer;
    dwColor : Cardinal;
    fDelta,
    h, s, v : Double;
begin
  h := StrToFloat(txtH.Text);
  s := StrToFloat(txtS.Text);
  v := StrToFloat(txtV.Text);

  iColor := Trunc(h / 60);
  fDelta := Frac(h / 60);

  if iColor = 5 then
     iNext := 0
  else
     iNext := iColor + 1;
  dwColor := GetMixColor(cdwKreis[iColor], cdwKreis[iNext], fDelta);
  dwColor := GetMixColor(dwColor, $FFFFFF, 1 - s);
  dwColor := GetMixColor(dwColor, 0, v);

  txtR.Text := IntToStr(GetRValue(dwColor));
  txtG.Text := IntToStr(GetGValue(dwColor));
  txtB.Text := IntToStr(GetBValue(dwColor));
end;
Vielleicht hilft das ja weiter...

mirage228 16. Feb 2004 17:37

Re: Farbpalette erstellen?
 
Hi!

Danke für den Code.

Um ihn noch ausprobieren zu können, bräuchte ich noch die Funktion GetMixColor(), die ich bei meinem Delphi nicht finden kann.

mfG
mirage228


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr.
Seite 1 von 2  1 2      

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