Programowanie w języku Delphi » FAQ

Mieszanie kolorów

function MieszanieKolorow(Kolor1,Kolor2:TColor;Proporcja1,Proporcja2:Integer):TColor;
var
  Color: Longint;
  R1,G1,B1,R2,G2,B2:Byte;
begin
  Color := ColorToRGB(Kolor1);
  r1     := Color;
  g1     := Color shr 8;
  b1     := Color shr 16;
  Color := ColorToRGB(Kolor2);
  r2     := Color;
  g2     := Color shr 8;
  b2     := Color shr 16;
  r1:=Round((r1 * Proporcja1 + r2 * Proporcja2) / (Proporcja1 + Proporcja2));
  g1:=Round((g1 * Proporcja1 + g2 * Proporcja2) / (Proporcja1 + Proporcja2));
  b1:=Round((b1 * Proporcja1 + b2 * Proporcja2) / (Proporcja1 + Proporcja2));
  result:=rgb(r1,g1,b1);
end;

1 komentarz

MikiKam 2007-02-23 14:14

Fajny efekt:

procedure TForm1.FormResize(Sender: TObject);
begin
  Form1.Color := MieszanieKolorow(random(100000),random(100000),Form1.Width,Form1.Height);
end;