vb.net - 图片框中的旋转图像显示旋转的原始形式
问题描述
我是使用 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
推荐阅读
- c# - 打开其他 EXCEL 文件时不加载 VSTO Excel 模板
- python - 在 tensorflow 中,如何将索引列表转换为指标向量?
- python - 如果循环为空,则显示一条消息
- php - fgets 一个 UTF-8 txt 文件返回垃圾字母,当文件为空白时返回 true
- android - Android Socket.io 后台服务
- android - 数据绑定不能用 String.function() 调用静态函数
- javascript - 使用 JQuery 或 JavaScript 更改 DIV 中的更新/更改订单号
- android - 如何让 VrVideoView 在 Cardboard 模式下启动?
- html - 这个元素是什么类型的?
- sql - 如何在程序中连接用户?