Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Möglichkeit für Farbscala (https://www.delphipraxis.net/24222-moeglichkeit-fuer-farbscala.html)

eroe 17. Jun 2004 18:58


Möglichkeit für Farbscala
 
Hallo Jungs :)

Ich möchte ein Programm schreiben, in der eine Farbscala bearbeitet wird, und zwar sollen dies "Bereiche" der Scala, also die Einteilung, vom User frei wählbar sein (1-100 Abstufungen).
Soweit so gut, jedoch hab ich leider nicht die geringste Idee mit was für einem Objekt ich das realisieren kann :(
Ich hoffe ihr könnt mir da einen Denkanstoß geben ..

So long

eroe

hlohning 17. Jun 2004 21:08

Re: Möglichkeit für Farbscala
 
In der SDL Component Suite gibt es Funktionen zur Interpolation von RGB Farben und zur Konversion zwischen HSI, CYMK und RGB. Damit kannst du dann beliebige Farbskalen erzeugen:

http://www.lohninger.com/helpcsuite/..._sdlcolors.htm

Hier der Source-Code dazu:


Delphi-Quellcode:
(******************************************************************************)
function InterpolateColor (Cl1, Cl2: TColor; Level: double): TColor;
(******************************************************************************
  ENTRY: Cl1 .... start color
          Cl2 .... end color
          Level ..... interpolation level (0..1)

  EXIT:  function returns mixed color which contains 100*Level percent of color1
          and 100(1-Level) percent of color2
 ******************************************************************************)

var
  r,g,b : integer;
  C1Blue,
  C1Green,
  C1Red,
  C2Blue,
  C2Green,
  C2Red : integer;

begin
if Level > 1 then
  Level := 1;
if Level < 0 then
  Level := 0;
C1Blue := (Cl1 and $00FF0000) shr 16;
C1Green := (Cl1 and $0000FF00) shr 8;
C1Red := Cl1 and $000000FF;
C2Blue := (Cl2 and $00FF0000) shr 16;
C2Green := (Cl2 and $0000FF00) shr 8;
C2Red := Cl2 and $000000FF;
b := trunc(C1Blue+Level*(C2Blue-C1Blue));
g := trunc(C1Green+Level*(C2Green-C1Green));
r := trunc(C1Red+Level*(C2Red-C1Red));
InterpolateColor := (RGB (r,g,b) and $00FFFFFF);
end;
[edit=sakura] [delphi]Tags Mfg, sakura[/edit]

eroe 18. Jun 2004 14:46

Re: Möglichkeit für Farbscala
 
merci beaucoup :)
werd ich mich nachher gleich mal hinterklemmen ..
gott sei dir gnädig :D

so long

eroe

eroe 22. Jun 2004 14:45

Re: Möglichkeit für Farbscala
 
Huhu again :)

So, ich hab jetz n bissl mit der Funktion rumgespielt, funktioniert einwandfrei, genau das was ich suchte ! :cheers:
Meine nächste Frage wäre, welche Komponente kann man denn eurer Ansicht nach am besten nutzen, um eine solche - dynamisch einteilbare - Farbscala darzustellen ? Denn da bin ich immernoch komplett unsicher .. Ich hab mir gedacht es ganz simpel mit Canvas zu bauen (jaja, unschön ohne Ende, ich weiß ;) ) aber da hat man ja, weil man auf die Integer-Werte angewiesen ist, extreme Ungenauigkeiten drin :( Wenn ich zB genau 73 Stufen haben will ist es nahezu unmöglich mit Integer-Werten eine möglichst genaue Einteilung zu machen, und soweit ich weiß arbeitet Canvas NUR mit Integer-Werten für Koordinaten, oder ?
Naja, jedenfalls wäre ich hier wiedermal für eure Hilfe dankbar ;)

Muetze1 22. Jun 2004 14:58

Re: Möglichkeit für Farbscala
 
Moin!

Du kannst dir doch einfach eine Komponente bauen, abgeleitet von einem TGraphicControl. Ansonsten benutzt Canvas immer nur ganze Pixelkoordinaten, weil halbe Pixel sind schlecht darstellbar. Somit wird bei solchen Einteilungen immer auf eine unterschiedliche Grösse der Bereiche hinauslaufen, aber dieser Unterschied von einem Pixel ist doch eigentlich vernachlääsigbar. Anonsten wenn du einen reinen Farbauswahl Dialog bauen willst (also alle Abstufen bzw. alle Farbwerte), so könnte dir das hier helfen.

MfG
Muetze1


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