Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Farben mischen mit Deckkraft (https://www.delphipraxis.net/107791-farben-mischen-mit-deckkraft.html)

Christian18 2. Feb 2008 09:22


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:
function Mischen(Pixel, Mischen : TColor; Percent : Integer) : TColor;
begin
  // keine Ahnung was ich hier tun muss
end;
MFG Christian18

peterlepan 2. Feb 2008 10:14

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

Christian18 2. Feb 2008 10:34

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;

peterlepan 2. Feb 2008 11:21

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

Christian18 2. Feb 2008 11:27

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

peterlepan 2. Feb 2008 11:35

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

Christian18 2. Feb 2008 11:37

Re: Farben mischen mit Deckkraft
 
Bei mir ist immer nur vorher zu sehen

peterlepan 2. Feb 2008 11:51

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.

Namenloser 2. Feb 2008 12:11

Re: Farben mischen mit Deckkraft
 
Also ich sehe keine Veränderung... Vista mit Glass-Effekt.

DGL-luke 2. Feb 2008 12:21

Re: Farben mischen mit Deckkraft
 
http://www.delphipraxis.net/internal...ct.php?t=67805

könnte auch helfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr.
Seite 1 von 2  1 2      

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