我是使用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
这是旋转图像的代码
我只想显示旋转的图像。预先感谢。
详细说明,如果将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.Image
事件处理程序中的代码中设置Load
。