Ir al contenido


Foto

[TRUCO DELPHI] Cambiar los canales de Colores de un TBitmap.


  • Por favor identifícate para responder
No hay respuestas en este tema

#1 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 10 diciembre 2016 - 05:01

[TRUCO DELPHI] Cambiar los canales de Colores de un TBitmap.


delphi
  1. function SetRGBChannelValue(Bitmap: TBitmap; Red, Green, Blue: Integer): Boolean;
  2. var
  3. i, j: Integer;
  4. rgbc: array[0..2] of Byte;
  5. c: TColor;
  6. r, g, b: Byte;
  7. begin
  8. if (Red = 0) and (Green = 0) and (Blue = 0) then
  9. begin
  10. Result := False;
  11. Exit;
  12. end;
  13.  
  14. for i := 0 to Bitmap.Height do
  15. begin
  16. for j := 0 to Bitmap.Width do
  17. begin
  18. c := Bitmap.Canvas.Pixels[j, i];
  19.  
  20. rgbc[0] := GetRValue(c);
  21. rgbc[1] := GetGValue(c);
  22. rgbc[2] := GetBValue(c);
  23.  
  24. if not (rgbc[0] + Red < 0) and not (rgbc[0] + Red > 255) then
  25. rgbc[0] := rgbc[0] + Red;
  26. if not (rgbc[1] + Green < 0) and not (rgbc[1] + Green > 255) then
  27. rgbc[1] := rgbc[1] + Green;
  28. if not (rgbc[2] + Blue < 0) and not (rgbc[2] + Blue > 255) then
  29. rgbc[2] := rgbc[2] + Blue;
  30.  
  31. r := rgbc[0];
  32. g := rgbc[1];
  33. b := rgbc[2];
  34.  
  35. Bitmap.Canvas.Pixels[j, i] := RGB(r, g, b);
  36. end;
  37. end;
  38.  
  39. Result := True;
  40. end;

Ejemplo de Uso:


delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3. SetColorValue(Image1.picture.Bitmap, Spinedit1.Value, Spinedit2.Value,
  4. Spinedit3.Value);
  5. end;

Saludos!


  • 1




IP.Board spam blocked by CleanTalk.