Показать сообщение отдельно
  #4  
Старый 19.05.2011, 01:39
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Обход какой:
диагональ 1: i = 0; j = 0;
диагональ 2: i = 1; j = 0;| i = 0; j = 1;
диагональ 3: i = 2; j = 0;| i = 1; j = 1;| i = 0; j = 2;
диагональ 4: i = 3; j = 0;| i = 2; j = 1;| i = 1; j = 2;| i = 0; j = 3;
Т.е. уменьшается номер картинки "по длине" и одновременно увеличивается "по высоте". Вот и проходим таким образом, вырезаем нужные кусочки изображения и рисуем. Так до конца ширины.
Потом идем по высоте, I ставится равным ширине и уменьшается, J увеличивается.
Первая часть так:
Код:
a:=0;
while a<w do
begin
j:=0;
 for i:=a downto 0 do
 begin
   // выводим кусок картинки
   inc(j);
 end;
inc(a);
end;
А можно J не юзать, просто писать везде "A-I".

Со второй, думаю, разберетесь =)
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием