парадокс с Image
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
объясните дураку в чём раздница:
между
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);
?
с виду одно и то же... но почему во втором случае он не обсчитывает правую половину холста?!?
между
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);
?
с виду одно и то же... но почему во втором случае он не обсчитывает правую половину холста?!?
Не в чем, просто массив в первом случае слева направо сверху вниз, а во втором сверху вниз слева вправо, проходится..
Если бы холст был с пропорцией 1:1 то обсчитал бы, а так нет.
Нужно, чтобы во внешнем цикле просчитывалась координата Y, а во внутненнем X.
Иначе обработается только часть холста длиной Image1.Height, а в высоту, наоборот, программа будет считывать данные изниоткуда(если ширина больше высоты).
Нужно, чтобы во внешнем цикле просчитывалась координата Y, а во внутненнем X.
Иначе обработается только часть холста длиной Image1.Height, а в высоту, наоборот, программа будет считывать данные изниоткуда(если ширина больше высоты).
Ни что так не ограничивает фантазию программиста, как компилятор...
Бред .
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Duncon, отнюдь. В обоих случаях обращение [i, j]. Но в первом случае i - это X, а во втором - Y

А да не обратил внимание на Pixels[i,j] такую ошибку грех допускать - скорее распните нечистого.
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Парни Вы чаво? Тут же просто, 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]
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]
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Dr_Grizzly, не тормози, уже разобрались 

