![]() |
Farbmisch-Komponente
Ich hatte schon mal vor einigen Jahrtausenden an so einer Komponente gearbeitet, und ich meine, ich hätte sie auch zu Ende entwickelt und einsetzen können. Aber nach über zehn Jahren und einigen neuen Festplatten finde ich den Code einfach nicht mehr. Daher starte ich nun die Entwicklung neu und laufe auch gleich in die ersten Probleme.
Ich will eine Delphi-Komponente erstellen, die zwei Farben (TColor) miteinander mischen kann, und zwar auch unter Berücksichtigung einer prozentuellen Mischungsstärke. Beispiel 1: Mische zum Schwarz (RGB 00 00 00) die Farbe Weiß (RGB 255 255 255), aber nur 50%. Das Ergebis, in RGB, sollte dann ein dunkleres Grau (RGB 64 64 64) sein. Beispiel 2: Mische zum Weiß (RGB 255 255 255) die Farbe Schwarz (RGB 00 00 00), aber nur 50%. Das Ergebis, in RGB, sollte dann ein helleres Grau (RGB 172 172 172) sein. Hier der bisherige Code:
Code:
Zur Zeit habe ich aber noch logische Probleme zu bewältigen. Wären beide Farben gleich stark zu mischen, wäre es einfach für mich. Mein Problem ist also kein programmiertechnisches, sondern eher ein mathematisches (Laßt dies bloß nicht meine einstigen Lehrer hören!). Könnt Ihr mir bei der Formel helfen?
function Colorize(ColorOriginal, ColorAdded: TColor; PercentageStrength: SmallInt): TColor;
var Color1R, Color1G, Color1B: Real; Color2R, Color2G, Color2B: Real; begin Color1R:=HexToFloat(copy(ColorOriginal,7,2)); Color1G:=HexToFloat(copy(ColorOriginal,5,2)); Color1B:=HexToFloat(copy(ColorOriginal,3,2)); Color2R:=(HexToFloat(copy(ColorAdded,7,2))/100)*PercentageStrength; Color2G:=(HexToFloat(copy(ColorAdded,5,2))/100)*PercentageStrength; Color2B:=(HexToFloat(copy(ColorAdded,3,2))/100)*PercentageStrength; if(Color1R>((Color2R/PercentageStrength)*100)) then Color1R:=(Color1R-Color2R)div 2 // dies ist die Formel, aber ich denke, ich habe einen falschen Denkansatz else if(Color1R<((Color2R/PercentageStrength)*100)) then Color1R:=(Color1R+Color2R)div 2; ... end; Wenn dieses logische Problem gelöst ist, könnte es sein, daß ich mich erneut an Euch wende, um Fragen bei der Erstellung eienr Komponente zu lösen, aber dies ist noch nicht sicher, vieleicht schaffe ich dies auch alleine. Habe bisher nur jene alte Farbkomponente entwickelt und eigentlich vergessen, wie's geht. Jetzt aber brauche ich Hilfe bei der Formel. Hoffentlich konnte ich mich gut genug erklären. :-) Übrigens, sobald ich diese Komponente fertig habe, stelle ich sie jedem als FreeWare zur Verfügung. Ich denke, man kann so eine Komponente recht gut gebrauchen, wenn man nur etwas Design und Farbe in die Programme hineinbringen will... |
AW: Farbmisch-Komponente
Das Problem ist gelöst. Ich habe (leider) den kompletten Sourcecode so einer Funktion im Internet entdeckt, und zwar hier:
![]() Vielen Dank trotzdem - für's Lesen. :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 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