Ocena użytkownikóww: ***** / 1
Nadesłany przez Tomasz Lubiński, 29 marca 2006 01: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.
Zmiana wielkosci obrazu - Nearest Neighbour - Delphi/NN.pas:
// Zmiana wielkosci obrazka -
// Algorytm Nearest neighbour - najblizsze sasiedztwo
// www.algorytm.org
// Tomasz Lubinski (c) 2006
unit NN;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, StdCtrls, jpeg;
type
TForm1 = class(TForm)
src: TImage;
dst: TImage;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Edit2: TEdit;
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
i,j, x,y: Integer;
ratiox, ratioy : Double;
begin
dst.Width := StrToInt(Edit2.Text);
dst.Height := StrToInt(Edit1.Text);
dst.Picture.Bitmap.Width := dst.Width;
dst.Picture.Bitmap.Height := dst.Height;
ratiox := (src.Width-1)/(dst.Width-1);
ratioy := (src.Height-1)/(dst.Height-1);
for i:=1 to dst.Width do
for j:= 1 to dst.Height do
begin
x := Round((i-1) * ratiox + 1);
y := Round((j-1) * ratioy + 1);
dst.Canvas.Pixels[i,j] := src.Canvas.Pixels[x,y];
end;
end;
end.