![]() |
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 |
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:
![]() Hier der Source-Code dazu:
Delphi-Quellcode:
[edit=sakura] [delphi]Tags Mfg, sakura[/edit]
(******************************************************************************)
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; |
Re: Möglichkeit für Farbscala
merci beaucoup :)
werd ich mich nachher gleich mal hinterklemmen .. gott sei dir gnädig :D so long eroe |
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 ;) |
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 ![]() MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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-2025 by Thomas Breitkreuz