gpt4 book ai didi

c# - 对于某些角度,Matrix.RotateAt 方法中是否存在错误? .Net Winforms

转载 作者:行者123 更新时间:2023-12-04 06:52:40 25 4
gpt4 key购买 nike

这是我用来旋转的代码:

Dim m As New System.Drawing.Drawing2D.Matrix
Dim size = image.Size
m.RotateAt(degreeAngle, New PointF(CSng(size.Width / 2), CSng(size.Height / 2)))
Dim temp As New Bitmap(600, 600, Imaging.PixelFormat.Format32bppPArgb)
Dim g As Graphics = Graphics.FromImage(temp)
g.Transform = m
g.DrawImage(image, 0, 0)

(1) 为简洁起见,去除了处置。
(2) 我用一个 200 x 200 的矩形测试代码。
(3) 大小 600,600 它只是一个任意大的值,我知道将适合旋转图像的右侧和底部以进行测试。
(4) 我知道,使用此代码,顶部和左侧边缘将被剪裁,因为旋转后我没有改变原点。

问题只发生在某些角度:

(1) 在 90 时,右手边完全消失。
(2) 180 时,右边缘和下边缘还在,但非常褪色。
(3) 在 270 处,底部边缘完全消失。

这是一个已知的错误?

如果我手动旋转角并通过指定输出矩形绘制图像,我不会遇到同样的问题 - 尽管它比使用 RotateAt 稍慢。

最佳答案

RotateAt使用公式和悲伤进行旋转,因为这在以 90 度以外的任何增量旋转时是必需的。如果您要以 90 度为增量旋转,请使用 RotateFlip ,这更有效,更准确。

关于c# - 对于某些角度,Matrix.RotateAt 方法中是否存在错误? .Net Winforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2896776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com