Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi farben beeinflussen?! (https://www.delphipraxis.net/57459-farben-beeinflussen.html)

masterofbeer 21. Nov 2005 18:34


farben beeinflussen?!
 
hallo...folgendes problem:

ich hab in einem image ein pixel mit einer bestimmten farbe zb clred. jetzt möchte ich diese fareb beeinflussen zb mit weiß. dabei ist weiß aber nihct pures weiß sondern sollte noch mit einem wert zwischen 0 und 1 multipliziert werden in seiner intensität, die farbe rot soll dann je nach dem wie stark das weiß ist heller oder dunkler werden... wie mache ich das plz help

Pfoto 21. Nov 2005 18:53

Re: farben beeinflussen?!
 
Hallo masterofbeer,

brauchst du nur die Formel oder generell auch eine Anleitung, wie man auf die Farben eines Bitmaps zugreift. Bei letzerem könnte ich nämlich helfen. Die Formel wird sich dann sicherlich auch noch finden.


Gruß
Pfoto

masterofbeer 21. Nov 2005 19:03

Re: farben beeinflussen?!
 
also das problem ist vieleicht anschaulicher wenn ich schreibe was ich will.

ich bin grade dabei eine beeinflussung eines punktes im raum durch ein licht zu proggen.
ich möche dass ein pixel mit einer bestimmten farbe durch eine andere farbe beinflüßt wird. dabei wird zuerst ein wert ermittelt der zwischen 0 und 1 liegt, 0 bedeutet garnicht beeinflusst und 1 die erste farbe wird komplett zur zweiten...alle werde dazwischen sollen abstuffungen sein.

Der_Unwissende 21. Nov 2005 19:12

Re: farben beeinflussen?!
 
Ja, damit hast du doch auch schon geschrieben was du machen musst.
Du hast deinen Ausgangswert F_Start und dein Zielwert F_Ziel. Dann nimmst du die Differenz (F_Ziel - F_Start) und multiplizierst diese Differenz mit deinem Faktor (zwischen 0 und 1). Das Ganze addierst du dann zu F_Start und fertig.

Das ist alles

Gruß Der Unwissende

PS:
Für eine große Anzahl von Pixeln könnte es schneller sein eine Lookup-Tabelle zu schreiben, in der du für jede mögliche Farbe schon mal den späteren Wert berechnest. Und dann musst du nur in der Tabelle schauen, welcher Wert dort steht

masterofbeer 21. Nov 2005 21:54

Re: farben beeinflussen?!
 
ja soweit geht dann mein mathematisches verständniss auch noch :-P

das problem ist: wie addiere ich zwei werte von typen TColor?!


look up?! ne geht nicht, da die werte alle äußerst verschieden sind, aber werd ich mir für einfachere sachen aufbewahren

thx dann

faux 22. Nov 2005 05:59

Re: farben beeinflussen?!
 
Hallo!

Hier http://www.dsdt.info/tipps/?id=652 steckt glaube ich die Formel drinnen die du suchst:

Delphi-Quellcode:
Trunc(B*0.11+G*0.59+R*0.3); //R, B und G sind die Integervalues der Rot Grün und Blau Werte
Grüße
Faux

Kroko1999 22. Nov 2005 06:43

Re: farben beeinflussen?!
 
zerlege TColor in Rot, Grün und Blau -> manipuliere die Farben -> und schreibe sie wieder in TColor
Delphi-Quellcode:
type
TRGBRec = record
    Rot,Gruen,Blau: real;
  end;
   
function TColorToRGBRec (const C: TColor): TRGBRec;
begin
  Result.Rot := GetRValue (C)/255;
  Result.Gruen := GetGValue (C)/255;
  Result.Blau := GetBValue (C)/255;
end;

function RGBRecToTColor (const R: TRGBRec): TColor;
begin
  Result := RGB (Round (R.Rot*255),Round(R.Gruen*255),Round(G.Blau*255));
end;

function MulRGB (const AFaktorRot,AFaktorGruen,AFaktorBlau; var R: TRGBRec);
begin
  R.Rot := R.Rot*AFaktorRot;
  R.Gruen := R.Gruen*AFaktorGruen;
  R.Blau := R.Blau*AFaktorBlau;
end;

Der_Unwissende 22. Nov 2005 10:27

Re: farben beeinflussen?!
 
Hi,
ich geh mal davon aus, dass du auf eine Bitmap zugreifst, kannst du einfach gut in ein Image legen und gleichzeitig bietet die dir ne Menge sehr guter Eigenschaften.
Für dich am wichtigsten könnte hier die Eigenschaft Scanline sein. Mit Scanline[i] bekommst du einen Zeiger auf die i-te Zeile deines Bitmap. Dort stehen all deine Farbinformationen drin. Da es sich um einen Zeiger handelt, kannst du also direkt die entsprechenden Zeilen verändern und bekommtst genau das was du möchtest.

Zu Scanline findest du definitiv ne ganze Menge in der DP. Such einfach mal.

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 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