AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Farbmisch-Komponente

Ein Thema von SvenLittkowski · begonnen am 7. Feb 2011 · letzter Beitrag vom 7. Feb 2011
Antwort Antwort
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#1

Farbmisch-Komponente

  Alt 7. Feb 2011, 03:51
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:
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;
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?

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...

Geändert von SvenLittkowski ( 7. Feb 2011 um 05:35 Uhr)
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#2

AW: Farbmisch-Komponente

  Alt 7. Feb 2011, 05:48
Das Problem ist gelöst. Ich habe (leider) den kompletten Sourcecode so einer Funktion im Internet entdeckt, und zwar hier:
http://rmklever.com/?p=116

Vielen Dank trotzdem - für's Lesen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 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