Imports System.Drawing.Imaging
Public Class Form1
Dim i As Image = Image.FromFile(imageName)
Dim g As Graphics = Graphics.FromImage(i) '此处从背景图创建Greaphics
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'划线
g.Dispose()
PictureBox1.Image = i
End Sub
'退出
Me.Close()
'存盘
i.Save( "C:\testimage.jpg ", ImageFormat.Jpeg)
i.Dispose()
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Class
Dim bmp As New Bitmap("打开图片的路径")
bmp.Save("保存图片的路径")
Dim t As New TextBox()
Dim p As New PictureBox
p.Image = bmp 'picture等支持image的控件.
t.CreateGraphics.DrawImage(bmp, New Point) '文本控件.
Me.BackgroundImage = bmp '窗体
将你所绘制的东西线绘制到一个Bitmap上,然后使用Graphics.FromImage把这个Bitmap显示出来,最后调用Bitmap的Save方法,把图像保存为本地文件.
这样,你保存的文件和你绘制的东西就是一致的.
可以把所有画的线都保存在一个列表中,画的时候全部画出即可.如下:
Public?Class?Form1
Class?Line? ? ? '直线类
? ? ? ? Point1?=?p1
? ? End?Sub
? ? Public?Sub?Draw(g?As?Graphics)? ? ? '绘制方法
End?Class
Private?Lines?As?New?List(Of?Line)? ? ? '列表用于保存所有画下的直线
Private?Sub?Form1_Load(sender?As?Object,?e?As?EventArgs)?Handles?MyBase.Load
? ? BackColor?=?Color.White
? ? DoubleBuffered?=?True? ? ? ?'开启双缓冲可有效避免闪烁
End?Sub
Private?Sub?Form1_MouseDown(sender?As?Object,?e?As?MouseEventArgs)?Handles?Me.MouseDown
? ? Lines.Add(New?Line(e.Location,?e.Location))? ? ?'在直线列表中添加直线
Private?Sub?Form1_MouseMove(sender?As?Object,?e?As?MouseEventArgs)?Handles?Me.MouseMove
? ? If?e.Button?Windows.Forms.MouseButtons.Left?Then?Return?'左键未按下
? ? '鼠标拖动时改变列表最后一条直线(也即当前直线的第二个端点)
? ? Refresh()? ? ? ?'刷新窗体
'在Form的Paint事件中绘制所有直线,每次Form1重绘时都会触发Paint事件
'PS:?也可以通过重写OnPaint方法来达到类似的效果
Private?Sub?Form1_Paint(sender?As?Object,?e?As?PaintEventArgs)?Handles?Me.Paint
? ? For?Each?l?In?Lines? ? ?'遍历所有直线
? ? ? ? l.Draw(e.Graphics)? '调用绘制方法,传入的参数可以理解为画布
? ? Next
运行效果:
以上就是土嘎嘎小编为大家整理的vb.net保存绘制相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!