首页 > 解决方案 > 图片框中的旋转图像显示旋转的原始形式

问题描述

我是使用 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.netwinformspicturebox

解决方案


详细地说,如果你将一个Image对象分配给 的Image属性,PictureBox那么控件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.ImageLoad


推荐阅读