Страница 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, не тормози, уже разобрались
