我一直在试图旋转一张图片,但是我遇到了一些问题。第一块代码可以工作,但它造成了一个不良的副作用:在旋转后,图片被缩小以使x维度匹配现有的y维度。
因此,我旋转了图片,但它只占据了画布的一部分。
为了解决这个问题,我想我应该创建一个更大的位图作为中间步骤,这样当它被旋转时,图片就不需要缩小以适应。
第二段代码实现了这一点。不幸的是,当我运行它时,我得到了一个通用的GDI错误。
有人知道我做错了什么吗?
有效示例:
因此,我旋转了图片,但它只占据了画布的一部分。
为了解决这个问题,我想我应该创建一个更大的位图作为中间步骤,这样当它被旋转时,图片就不需要缩小以适应。
第二段代码实现了这一点。不幸的是,当我运行它时,我得到了一个通用的GDI错误。
有人知道我做错了什么吗?
有效示例:
Imports System.Drawing
If XSize < YSize Then 'Needs to be rotated
Dim img As Image = Image.FromFile(strFilename)
Dim b = New Bitmap(img.Height, img.Width)
Dim gr As Graphics = Graphics.FromImage(b)
img.RotateFlip(RotateFlipType.Rotate90FlipNone)
gr.DrawImage(img, New Point(0, 0))
img = Nothing
b.Save(strFilename)
End If
这段代码不起作用:
'Needs to be rotated
If XSize < YSize Then
Dim img As Image = Image.FromFile(strFilename)
Dim bmpTemp As Image
If img.Height > img.Width Then
bmpTemp = New Bitmap(img.Height, img.Height)
Else
bmpTemp = New Bitmap(img.Width, img.Width)
End If
Dim gr2 As Graphics = Graphics.FromImage(bmpTemp)
gr2.DrawImage(img, New Point(0, 0))
Dim b = New Bitmap(img.Height, img.Width)
Dim gr As Graphics = Graphics.FromImage(b)
bmpTemp.RotateFlip(RotateFlipType.Rotate90FlipNone)
gr.DrawImage(bmpTemp, New Point(0, 0))
img = Nothing
b.Save(strFilename)
End If
RotateFlip
不会缩放任何东西,所以我不确定你想要实现什么。 - Nico Schertler