
29.03.2011, 11:08
|
Прохожий
|
|
Регистрация: 14.03.2011
Сообщения: 15
Репутация: 10
|
|
Если добавить еще одну переменную и перебирать цикл по этим 2 переменным, то программа все равно не работает (((. Помогите понять причину. Заранее спасибо.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Jpeg;
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
Button2: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
k,l: real;
Csr: real;
Cn: real;
r,g,b: integer;
i,j,ii: integer;
jj,ik,jl:real;
Win, Wout, Hin, Hout: integer;
Nmin,N, Cmin:real;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// Выбираем картинку
if opendialog1.Execute then
// Определяем коэффициент масштабирования картинки
k:=Win/Wout;
l:=Hin/Hout;
// Цикл перебора по всем блокам входной картинки. Размер блока k*k
begin
// Вычисляем средний цвет блока
Csr:=1/(sqr(k));
for i:=0 to Image1.Width do
for j:=0 to Image1.Height do
begin
r:=0;
g:=0;
b:=0;
for ii:= -k to k do
for jj:= -l to l do
begin
ik:=i+ii;
jl:=j+jj;
if (ik>=0) and (jl>=0)
and (ik<= Image1.width) and (jl<= Image1.Height) then
begin
r:=r+Image1.texture[jl,ik].r;
g:=g+Image1.texture[jl,ik].g;
b:=b+Image1.texture[jl,ik].b;
end;
Image1.texture[j,i].r:=round(r*Csr);
Image1.texture[j,i].g:=round(g*Csr);
Image1.texture[j,i].b:=round(b*Csr);
end;
end;
end;
// Подбираем наиближайший цвет Nmin из набора среднему цвету блока Csr
begin
Nmin:=1000;
// Цикл по всем цветам Cn. Вычисляем расстояние между цветами Сn и Csr
begin
N:=(Csr-Cn)/Csr;
if N < Nmin then
Nmin:=N;
Cmin:=Cn;
end;
end;
// Вставляем цвет в ячейку выходной картинки соответсвующий блоку входной картинки
Cmin:=Cmin+Image1.texture[jl,ik].Cmin;
end;
end;
end;
end.
Выдает несколько ошибок: "For loop control variable must be simple local variable", так же по какой-то причине пишет, что неизвестный идентификатор "texture".
|