图片框中的旋转图像显示了旋转后的原始格式

问题描述 投票:0回答:1

我是使用VB.Net框架4.7.2 Winforms的初学者。我试图在应用程序中旋转飞机的图像,但它显示了旋转的飞机和原始飞机。

“图片”

左图不旋转,右图旋转-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

这是旋转图像的代码

我只想显示旋转的图像。预先感谢。

vb.net winforms picturebox
1个回答
0
投票

详细说明,如果将Image对象分配给ImagePictureBox属性,则控件每次都会绘制Image本身。如果您然后在Image事件处理程序中自己绘制相同的Paint对象,则当然会看到两个图像。

基本上,不要将任何内容分配给控件的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

[如果您当前在设计器中进行设置,则可以在当前设置myImage的地方,也可以在PictureBox1.Image事件处理程序中的代码中设置Load

© www.soinside.com 2019 - 2024. All rights reserved.