Обход какой:
диагональ 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".
Со второй, думаю, разберетесь =)