我正在绘制使用图形转换旋转的图像,但无法获得旋转图像的位置和大小。
绘画事件:
graphics.TranslateTransform(BaseX, BaseY);
graphics.RotateTransform((float)Rotation);
graphics.DrawImage(Image, X - BaseX, Y - BaseY, Image.Width, Image.Height);
ToRectangle方法:
public Rectangle ToRotatedRectangle() {
// Code here to rotate X, Y, Image.Width and Image.Height values
return new Rectangle(rotatedX, rotatedY, rotatedWidth, rotatedHeight);
}
我看过其他几个帖子可以得到旋转后的大小,但是没有一个包含X和Y值。我尝试过单独旋转它们,但是the location is not correct。
1条答案
按热度按时间at0kjp5o1#
请注意:“graphics.RotateTransform(X)”将图像顺时针旋转X度,而“Math.Cos(X)”和“Math.Sin(X)”基于X弧度进行计算。
根据您的平移/旋转,我们可以使用三角函数计算sin和cos值。
使用如下的线性代数将所得到的图形矩阵乘以任何给定的(X,Y
在图形上绘制的4个角点是:
因此在平移/旋转之后,它们变成
要得到左上角,您需要每个X和Y值中的最小值。宽度和高度将是最大和最小X和Y值之间的差值,可以简化如下所示。