Einzelnen Beitrag anzeigen

eisblock

Registriert seit: 11. Dez 2005
Ort: Linderbach
127 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Einzelne Komponenten semitransparent zeichnen

  Alt 7. Feb 2006, 18:26
Habe die Prozedur jetzt mal so umgeschrieben, dass man sie für Rechteckige Bereiche nutzen kann.
(kann man sicher noch optimieren)

Delphi-Quellcode:
procedure Helligkeit(C:TCanvas; Faktor:Real; x,y,x2,y2: integer);
var Color: LongInt;
  tmp1, tmp2, R, G, B: Integer;
begin
  with C do
    for tmp1:= ClipRect.Left to x2 do
      for tmp2:= ClipRect.Top to y2 do
      begin
       Color:=ColorToRGB(Pixels[tmp1+x,tmp2+Y]);
       R := Round(GetRValue(Color)*Faktor);
       G := Round(GetGValue(Color)*Faktor);
       B := Round(GetBValue(Color)*Faktor);
       if R>255 then R:=255;
       if G>255 then G:=255;
       if B>255 then B:=255;
       Pixels[tmp1+x,tmp2+Y]:=RGB(R,G,B);
     end;
end;
Beispiel für Einbindung:
Helligkeit(canvas,1.2,50,50,150,150); 1.2 steht für den Helligkeitsfaktor (größer als 1: heller, kleiner als 1: dunkler)
50,50 stehen für die Werte x und y, bei denen das hellere oder dunklere Rechteck beginnt,
150,150 stehen für die Endwerte x und y, bei denen das Rechteck aufhört.
  Mit Zitat antworten Zitat