imgmap[i,j]:=image1;使图像数组所有元素都是image1了,同一个对象,当然只有一张图。应该用imgmap[i,j].Picture:=Image1.Picture;这样才是把Image1的图像给每一个数组元素。另外,前面一个二层循环是多余的,图像数组元素的建立在下面的循环中已经有,上面再有就建立两次了。
你的TOP,LEFT都只相差了一个像素,怎么可能看到后面的图呢