![]() |
Farben mischen mit Deckkraft
Hallo,
ich möchte mir eine kleine Funktion schreiben, der ich folgende Werte übergebe: - Pixel Farbe - Pixel Farbe, womit gemischt werden soll - Prozentualen Anteil der Mischfarbe Kann man sowas machen? Wenn ja wie? Welche berechnungen muss ich durchführen?
Delphi-Quellcode:
MFG Christian18
function Mischen(Pixel, Mischen : TColor; Percent : Integer) : TColor;
begin // keine Ahnung was ich hier tun muss end; |
Re: Farben mischen mit Deckkraft
Hallo Christian!
Ich habe das zwar auch noch nicht gemacht, würde aber wie folgt vorgehen. TColor enthält ja die Rot/Grün/Blau-Anteile der Farbe, die müssten zuerst für die beiden Farben aus der entsprechenden Variablen herausgezogen werden. Dann würde ich für jede Farbe einzeln einen Mischwert auf Grund der Prozentangabe ermitteln. z.B. Rotanteil der Grundfarbe 200, Rotanteil der Mischfarbe 100, 20% Mischung ergibt einen Rotwert von 180, also 100 sind die Differenz, 20% davon sind 20, da die Mischfarbe einen niedrigeren Wert hat wird es von der Grundfarbe abgezogen. Das musst Du nun nur in einen Algorithmus packen. :drunken: Ob das allerdings mit realen Farbmodellen richtig zusammespielt, weiss ich nicht, rein Programmtechnisch würde ich es zumindest so machen. Gruß Peter |
Re: Farben mischen mit Deckkraft
Hallo,
ich habe das mal probiert. Meiner meinung nach passiert da nichts:
Delphi-Quellcode:
function TForm2.Mischen(Pixel, Mischen : TColor; Percent : Integer) : TColor;
var Farbe1, Farbe2, Farbe3 : TFarbe; begin // RGB auslesen with Farbe1 do begin R:=GetRValue(Pixel); G:=GetGValue(Pixel); B:=GetBValue(Pixel); end; with Farbe2 do begin R:=GetRValue(Mischen); G:=GetGValue(Mischen); B:=GetBValue(Mischen); end; with Farbe3 do begin R:=Round(Farbe1.R - ((Farbe2.R * Percent) / 100)); G:=Round(Farbe1.G - ((Farbe2.G * Percent) / 100)); B:=Round(Farbe1.B - ((Farbe2.B * Percent) / 100)); Result:=RGB(R, G, B); end; end; |
Re: Farben mischen mit Deckkraft
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Christian!
Ich hab grad mal Deine Funktion in ein Formular reingenommen und das Ganze mit drei Panels ausprobiert, scheint zu funktionieren (siehe zip). Natürlich kannst Du den Anteil der Mischfarbe nicht immer von der Grundfarbe abziehen, wenn der Wert bei der Mischfarbe größer ist, wird der Anteil zur Grundfarbe addiert. Gruß Peter |
Re: Farben mischen mit Deckkraft
Hallo,
kannst du mal einen screenshot machen? bei mir bleibt panel3 grau. ich verwende windows vista ultimate. kann es daran liegen? MFG christian18 |
Re: Farben mischen mit Deckkraft
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Christian!
Vista hab ich noch nicht probiert, mach ich aber gerade unter VMWare, mal sehen was dort passiert. Unter XP sieht es wie auf den Screenshots aus. Peter |
Re: Farben mischen mit Deckkraft
Bei mir ist immer nur vorher zu sehen
|
Re: Farben mischen mit Deckkraft
Ich hab jetzt das Programm unter Vista in einer VWMare laufen lassen, mit dem gleichen Ergebnis wie bei XP.
Allerdings sind die Vista-Grafikeffekte wie die Glasrahmen in der VMWare abgeschaltet. |
Re: Farben mischen mit Deckkraft
Also ich sehe keine Veränderung... Vista mit Glass-Effekt.
|
Re: Farben mischen mit Deckkraft
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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