| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 
 |   procedure CreateInactiveImageList(Source, Target: TImageList; brightness:integer; TranparentColor: TColor); overload;
 function ChangeBrightness(Farbe: TColor): TColor;
 var
 R, G, B: Byte;
 begin
 Farbe := ColorToRGB(Farbe);
 R := (Farbe and $000000FF);
 G := (Farbe and $0000FF00) shr 8;
 B := (Farbe and $00FF0000) shr 16;
 if brightness < 0 then
 begin
 R := Trunc(R + (R * brightness / 100));
 G := Trunc(G + (G * brightness / 100));
 B := Trunc(B + (B * brightness / 100));
 end
 else
 begin
 R := Ceil(R + ((255 - R) * brightness / 100));
 G := Ceil(G + ((255 - G) * brightness / 100));
 B := Ceil(B + ((255 - B) * brightness / 100));
 end;
 Result := RGB(R, G, B);
 end;
 function BitmapToGrayscale(const Bitmap: TBitmap): TBitmap;
 var
 i, j: Integer;
 Grayshade, Red, Green, Blue: Byte;
 PixelColor: Longint;
 begin
 try
 Result := Bitmap;
 with Result do
 for i := 0 to Width - 1 do
 for j := 0 to Height - 1 do
 begin
 PixelColor := ColorToRGB(Canvas.Pixels[i, j]);
 Red := PixelColor;
 Green := PixelColor shr 8;
 Blue := PixelColor shr 16;
 Grayshade := Round(0.3 * Red + 0.6 * Green + 0.1 * Blue);
 Canvas.Pixels[i, j] := RGB(Grayshade, Grayshade, Grayshade);
 end;
 except
 Result := Bitmap;
 end;
 end;
 var
 cBmp, gBmp: TBitmap;
 n, x, y: integer;
 OrigBK: TColor;
 begin
 Target.Clear;
 OrigBK := Source.BkColor;
 Source.BkColor := TranparentColor;
 for n := 0 to Source.Count - 1 do
 begin
 cBmp := TBitmap.Create;
 gBmp := TBitmap.Create;
 try
 Source.GetBitmap(n, cBmp);
 try
 gBmp.Assign(BitmapToGrayscale(cBmp));
 Source.GetBitmap(n, cBmp);
 for x := 0 to 15 do
 for y := 0 to 15 do
 begin
 if cBmp.Canvas.Pixels[x, y] = TranparentColor then
 gBmp.Canvas.Pixels[x, y] := TranparentColor
 else
 gBmp.Canvas.Pixels[x, y] :=
 ChangeBrightness(gBmp.Canvas.Pixels[x, y]);
 end;
 Target.AddMasked(gBmp, TranparentColor);
 except
 end;
 finally
 FreeAndNil(cBmp);
 FreeAndNil(gBmp);
 end;
 end;
 Source.BkColor := OrigBK;
 end;
 procedure CreateInactiveImageList(Source, Target: TImageList); overload;
 begin
 CreateInactiveImageList(Source, Target, 30, clFuchsia);
 end;
 |