Прежде всего, почему вы выделяете объект Graphics
из растрового изображения, которое затем переходите к рисованию на графике? Это не имеет смысла.
Dim gL As Graphics = Graphics.FromImage(bmpLongNeedle)
' … '
gL.DrawImage(bmpLongNeedle, 0, 0)
Вероятно, вам нужен графический контекст для целого изображения. Затем вы применяете преобразования к нему и, наконец, рисуете изображение bmpLongNeedle
.
Во-вторых, ваши переводы выглядят перевернутыми: на первом этапе вам нужно переместить изображение в начало координат (0, 0); затем вы поворачиваете его, а затем перемещаете назад. Поэтому преобразование должно выглядеть так:
gL.TranslateTransform(-bmpLongNeedle.Width * 0.5, -bmpLongNeedle.Height * 0.5)
gL.RotateTransform(angleLongNeedle)
gL.TranslateTransform(bmpLongNeedle.Width * 0.5, bmpLongNeedle.Height * 0.5)
Обратите внимание на обратный порядок TranslateTransform
с. Кроме того, почему вы перевели в 0,74 раза высоту вместо половины?