Страница 1 из 1

парадокс с Image

Добавлено: 10 фев 2008, 13:08
Dim...ON
объясните дураку в чём раздница:
между

for i:=0 to Image1.Width do
for j:=0 to Image1.Height do
if Image1.Canvas.Pixels[i,j] = MyColor then Inc(count);

и

for i:=0 to Image1.Height do
for j:=0 to Image1.Width do
if Image1.Canvas.Pixels[i,j] = MyColor then Inc(count);

?

с виду одно и то же... но почему во втором случае он не обсчитывает правую половину холста?!?

Re: парадокс с Image

Добавлено: 10 фев 2008, 13:13
Duncon
Не в чем, просто массив в первом случае слева направо сверху вниз, а во втором сверху вниз слева вправо, проходится..

Re: парадокс с Image

Добавлено: 10 фев 2008, 13:14
MOTOCoder
Если бы холст был с пропорцией 1:1 то обсчитал бы, а так нет.
Нужно, чтобы во внешнем цикле просчитывалась координата Y, а во внутненнем X.
Иначе обработается только часть холста длиной Image1.Height, а в высоту, наоборот, программа будет считывать данные изниоткуда(если ширина больше высоты).

Re: парадокс с Image

Добавлено: 11 фев 2008, 08:07
Duncon
Бред .

Re: парадокс с Image

Добавлено: 11 фев 2008, 10:00
Игорь Акопян
Duncon, отнюдь. В обоих случаях обращение [i, j]. Но в первом случае i - это X, а во втором - Y

Re: парадокс с Image

Добавлено: 11 фев 2008, 18:13
Duncon
А да не обратил внимание на Pixels[i,j] такую ошибку грех допускать - скорее распните нечистого.

Re: парадокс с Image

Добавлено: 13 фев 2008, 19:10
Dr_Grizzly
Парни Вы чаво? Тут же просто, MOTOCoder - сказал правильно, ведь в первом варианте у него идет

for i:=0 to Image1.Width do
for j:=0 to Image1.Height do
if Image1.Canvas.Pixels[i,j]

а во втором варианте он меняет цыклы местами, а Pixels[i,j] остается тем же самым!!! Для второго варианта Pixels[j,i] - будет верным. Просто парень Х наложил на Y :)

for i:=0 to Image1.Height do
for j:=0 to Image1.Width do
if Image1.Canvas.Pixels[i,j]

Re: парадокс с Image

Добавлено: 14 фев 2008, 15:26
Игорь Акопян
Dr_Grizzly, не тормози, уже разобрались ;)