При рисовании повернутых фигур можно применять афинные преобразования. Компьютер умеет это делать быстро.
Например, при рисовании прямоугольника рисуем его неповернутым (стороны паралельны краям экрана), задаем матрицу преобразования (которая определяет смещение, поворот, масштабирование по X и по Y) и вот мы уже имеем нужный нам прямоугольник в нужном месте под нужным углом.
При необходимости сжатия/растяжения можно тривиально сжать/растянуть исходный прямоугольник (неповернутый). Его матрица преобразования останется прежней и сместит/перевернет его в то место, где он был изначально, но уже сжатым/растяженным.
Либо можно соответствующим образом модифицировать матрицу преобразования. Матрица преобразования определяет в том числе и растяжение/сжати по осям.
В .NET в GDI+ есть готовые возможности для работы с афинными преобразованиями:
Матричное представление преобразованийИспользование преобразований в управляемом GDI+
P.S.:
Если ваша задача - это лабораторная из цикла: сделал и забыл, то все это городить не имеет смысла.
Но в больших проектах, где много графических элементов повернутых друг относительно друга иерархически связанных, лучше освоить математику афинных преобразований и перестроить в соответствии с ними архитектуру. Проще жить будет.