Vb.net picturebox中的旋转图像显示旋转和原始形式

Vb.net picturebox中的旋转图像显示旋转和原始形式,vb.net,winforms,picturebox,Vb.net,Winforms,Picturebox,我是一个使用VB.NETFramework4.7.2WinForms的乞丐。 我试图在我的应用程序中旋转一个平面的图像,但它显示了旋转的平面和原始平面 左侧图片未旋转,右侧以-25°旋转 Private Sub Rotation(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint With e.Graphics .TranslateTransform(PictureBo

我是一个使用VB.NETFramework4.7.2WinForms的乞丐。 我试图在我的应用程序中旋转一个平面的图像,但它显示了旋转的平面和原始平面

左侧图片未旋转,右侧以-25°旋转

    Private Sub Rotation(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
        With e.Graphics
            .TranslateTransform(PictureBox1.Width \ 2, PictureBox1.Height \ 2)
            .RotateTransform(dgr)
            .DrawImage(PictureBox1.Image, (-PictureBox1.Width \ 2), (-PictureBox1.Height \ 2))
        End With
    End Sub
这是我用来旋转图像的代码

我只想旋转图像显示。
提前感谢。

要详细说明,如果将
图像
对象指定给
PictureBox
图像
属性,则控件每次都会绘制该
图像
本身。如果您随后在事件处理程序中自己绘制相同的
图像
对象,那么您当然会看到两个图像

基本上,不要将任何内容分配给控件的
Image
属性,而是分配给您自己的
Image
字段,并在
Paint
事件处理程序中使用该字段:

Private myImage As Image

Private Sub Rotation(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
    With e.Graphics
        .TranslateTransform(PictureBox1.Width \ 2, PictureBox1.Height \ 2)
        .RotateTransform(dgr)
        .DrawImage(myImage, (-PictureBox1.Width \ 2), (-PictureBox1.Height \ 2))
    End With
End Sub

无论当前在哪里设置
PictureBox1.Image,都可以在代码中设置
myImage
,如果当前在设计器中设置,则可以在
Load
事件处理程序中设置它。

首先清除图形。不要使用PictureBox.Image属性。将该图像指定给位图对象,并使用
Graphics.DrawImage()
在PictureBox的表面上绘制该图像。在这种情况下,您可以尝试该方法。还应考虑图像和画布的大小。要模拟PictureBox的拉伸模式,允许指定源矩形和目标矩形的
DrawImage()
重载就足够了。对于缩放模式,有一种通用方法