La hoja, pero el dibujo no,
Ok entonces voy suponer que cada uno de tus dibujos tiene $$l$$ pixeles de longitud horizontal por $$a$$ pixeles de alto.
no ocupa la hoja entera.
Con estos datos estoy suponiendo que quieres rotar un ángulo arbitrario $$\theta$$ de cada dibujo de una matriz de ellos dispuestos en tu pantalla cuadrada de $$X$$ longitud de lado.
Si vas a rotar cada dibujo, entonces tienes que tener en cuenta que su diagonal siempre es mas larga que sus lados y para que las imágenes de cada dibujo no se te superpongan tienen que estar separadas entre si mínimamente por esa distancia diagonal $$d$$, o si lo prefieres cada dibujo debe estar inscrito en una circunferencia de diámetro $$d$$
$$d$$ se calcula así $$d=\sqrt{l^2+a^2}$$ (Pitagoras)
En tu pantalla cualquier dibujo sobre los bordes el punto central de la imagen debe ubicarse mínimamente a $$d/2$$ de los extremos.
todo eso te garantiza que siempre veas todos los píxeles de cada imagen.
¿Vas a rotar la hoja?
Podría, pero entiendo que no es lo que quieres.
O puedo rotar "el cuadro" que ocupa, como cuando se seleccionan de a cuadros, en Paint.
Así es, la idea es rotar cada pixel de cada imagen rectangular, sin deformar el rectángulo y sin que un rectángulo pase por encima de otro rectángulo que este contiguo.
Entonces si la pantalla es cuadrada y cada dibujo queda dentro de una circunferencia solo puedes poner $$n=int \dfrac{X}{d}$$ dibujos por lado, es decir te quedan $$n^2$$ dibujos de $$l\times a$$
En otros hilos hemos hablado de como localizar una imagen por su número que está entre $$1$$ y $$n^2$$ creo que con eso no tendrás problema ya.
No se que tipo de información tienes de referencia de cada imagen supongamos que conoces la ubicación del pixel ubicado en el extremo superior izquierdo, yo la llamo $$(x0,y0)$$ que no es el extremo izquierdo en tu distribucion de pantalla $$(xq,yq)$$ ya que el rectangulo es menor que ese cuadrado donde lo inscribes , en teoría $$x0=xq+(d-l)/2$$ y $$y0=yq+(d-a)/2$$
entonces el centro de la imagen estará en el pixel $$(x_r,y_r)=(x0+l/2 \ ,\ y0+a/2)$$ entonces allí estará el centro de rotación de la imagen.
Ahora escojes un ángulo de rotación, digamos por ejemplo 30° en sentido contrario a las agujas del reloj, entonces $$\alpha =30$$ y si quiero ese ángulo en radianes usaría
$$\theta=\pi\dfrac{\alpha_{grados}}{180}=\pi\dfrac{30}{180}=\dfrac{\pi}{6}=0,5235.....$$
haces un bucle $$i$$ entre $$1$$ y $$l$$ y lo anidas con otro bucle $$j$$ entre $$1$$ y $$a$$
buscas la información de color del píxel ubicado $$xp= x0+i-1$$ e $$yp=y0+j-1$$ y la guardas en la variable color $$C$$
luego hallas la posición de ese nuevo pixel
$$x'=x0+l/2+(xp-xr)\cos\theta-(yp-yr)\sin\theta$$
$$y'=y0+a/2+(xp-xr)\sin\theta+(yp-yr)\cos\theta$$
luego pintas el pixel en la posición $$(x',y')$$ con el color $$C$$ que guardaste
Cierras ambos loops
Y continuas con otro número de imagen
Todo eso lo puedes poner en una función , procedimiento o subrutina donde le pasas el numero de imagen , el largo, el ancho y el ángulo a rotar, para poderla llamar donde sea dentro del programa y no repites código
Añado editado
ojo , todo esto es válido para un unico giro.
Si intentas repetir otro giro con la misma imagen anterior, solo giraran los píxeles dentro del rectángulo, y como parte de lo que ya habías rotado no está dentro de ese rectángulo, no rotara, por lo que la imagen se truncará,
si quieres que eso no te pase, tienes que rotar todos los puntos entre $$(xq,yq)$$ e $$(xq+l,yq+a)$$ pero solo pintar aquellos que cumplan
$$\dfrac{d}{2}\geq abs(\sqrt{(x'-xr)^2+(y'-yr)^2})$$ es decir todos aquellos que se inscriben en la circunferencia ( para optimizar tambien puedes ver si el punto está dentro de la circunferencia y luego proceder a rotarlo, esto lleva menos tiempo de máquina)
Saludos