algorytm.org

Implementacja w Delphi/Pascal

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Sepia - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Dariusz Rorat, 09 sierpnia 2010 22:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Sepia - Delphi/Unit1.pas:
//Sepia
//Dariusz Rorat
//www.algorytm.org

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Spin, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    RadioGroup1: TRadioGroup;
    Label1: TLabel;
    SpinEdit1: TSpinEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
color1,color2:longint;
r,g,b,rr,gg :byte;
h,w:integer;
depth: integer;
begin
depth:=SpinEdit1.Value;
  for h := 0 to Image1.height-1 do
  begin
    for w := 0 to Image1.width-1 do
    begin
    //konwersja na odcienie szarosci
    color1:=colortorgb(Image1.Canvas.pixels[w,h]);

    r:=getrvalue(color1);
    g:=getgvalue(color1);
    b:=getbvalue(color1);
    color2:=(r+g+b) div 3;
    color2:=RGB(color2,color2,color2);
    //konwersja do sepii
    if RadioGroup1.ItemIndex=1 then  //itemindex=1 - sepia
      begin
        color1:=color2;
     		r:=getrvalue(color1);
		    g:=getgvalue(color1);
    		b:=getbvalue(color1);
		    rr:=r+(depth*2);
    		gg:=g+depth;
		    if rr <= ((depth*2)-1) then
    		rr:=255;
    		if gg <= (depth-1) then
    		gg:=255;
        color2:=RGB(rr,gg,b);
      end;
    Image2.canvas.Pixels[w,h]:=color2;
    end;

  end;


end;

end.
Dodaj komentarz