这是我写的代码,保存之后只是一张空白图片……而没有我画的曲线啊??帮我看看
Public Class Form1
Dim preX As Single
Dim preY As Single
Private pStart, pEnd As Point
Dim ep As New Pen(Color.Red, 1)
Public image As Bitmap = Nothing
'Dim bm As New Bitmap(500, 500)
'Dim bm = New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height, Me.PictureBox1.CreateGraphics)
'Dim g = Graphics.FromImage(bm)
Dim g As Graphics
Private Sub Picturebox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
Me.PictureBox1.Controls.Clear()
image = New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)
Graphics.FromImage(image).Clear(Color.White)
Me.PictureBox1.Image = DirectCast(image.Clone(), Bitmap)
If e.Button = Windows.Forms.MouseButtons.Left Then
pStart.X = e.X
pStart.Y = e.Y
End If
End Sub
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
image = New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)
Using gr As Graphics = Graphics.FromImage(image)
Dim g As Graphics = PictureBox1.CreateGraphics()
If e.Button = Windows.Forms.MouseButtons.Left Then
pEnd.X = e.X
pEnd.Y = e.Y
g.DrawLine(ep, pStart, pEnd)
ListBox1.Items.Add(pStart.X & " " & pStart.Y)
pStart = pEnd
End If
End Using
' PictureBox1.Image. = bm
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PictureBox1.Image.Save("C:\Users\Administrator\Desktop\123.jpeg")
End Sub
在vb.net中,运行代码之后在picturebox里用鼠标移动事件,画了一条曲线,我想保存这个曲线成图片格式
答案:2 悬赏:80
解决时间 2021-02-16 05:52
- 提问者网友:幽瑟玉琼情殇
- 2021-02-15 22:29
最佳答案
- 二级知识专家网友:浪者不回头
- 2021-02-15 23:37
Picture1.AutoRedraw = True
'必须设为 True ,这样才能图形和文本输出到屏幕,并存储在内存的图象中。然后可以使用 Image 属性
SavePicture Picture1.Image, "C:\Pic1.BMP"
'此代码保存的是 Picture1 里使用 Line 、 Circle 、PaintPicture 等绘图方法画出来的图片,包括背景色以及 PICTURE 属性指定的背景图片
'Picture1.Image 就是调用了 Picture1 的 Image 属性
'"C:\Pic1.BMP" 就是保存的文件名
'注意:Image 属性输出的图片总是 BMP 格式的。如果要保存成 JPG/GIF 等格式,则必须转换!
SavePicture Picture1.Picture, "C:\Pic1.BMP"
'此代码保存的是 Picture1 里的 PICTURE 属性里的图片
'PICTURE 属性输出的图片格式取决于 PICTURE 属性里的图片的格式。
'例如,如果使用 LoadPicture("C:\B1.GIF") 导入了一个 GIF 图片,则 PICTURE 属性输出的图片的格式就是 GIF 格式的
'必须设为 True ,这样才能图形和文本输出到屏幕,并存储在内存的图象中。然后可以使用 Image 属性
SavePicture Picture1.Image, "C:\Pic1.BMP"
'此代码保存的是 Picture1 里使用 Line 、 Circle 、PaintPicture 等绘图方法画出来的图片,包括背景色以及 PICTURE 属性指定的背景图片
'Picture1.Image 就是调用了 Picture1 的 Image 属性
'"C:\Pic1.BMP" 就是保存的文件名
'注意:Image 属性输出的图片总是 BMP 格式的。如果要保存成 JPG/GIF 等格式,则必须转换!
SavePicture Picture1.Picture, "C:\Pic1.BMP"
'此代码保存的是 Picture1 里的 PICTURE 属性里的图片
'PICTURE 属性输出的图片格式取决于 PICTURE 属性里的图片的格式。
'例如,如果使用 LoadPicture("C:\B1.GIF") 导入了一个 GIF 图片,则 PICTURE 属性输出的图片的格式就是 GIF 格式的
全部回答
- 1楼网友:转身后的回眸
- 2021-02-15 23:55
第一点:解决数据如何保存的问题
曲线的数据保存在一个数组里,假定是a(n),数组的每个元素保存两个数据,a(i).x和a(1).y
其中:
a(i).x是与i有关的一个常量,a(i).x=a*i+b,
a(i).y是你的第i时点的数据
第二点:
写一个函数,作用就是把数组的数据绘制成曲线,draw(a)
第三点:解决的是何时绘图,以及如何移动的问题
当绘制完第一屏,又有新的数据时,这个该重新绘图
绘图之前做两件事,一是准备数据,二是清屏
每次绘图都要是调用draw(a),
新增点时使用循环 a(n).y=a(n-1) .y
把a(1)空出来,然后将新的数据赋值给a(1),就是:a(1).y=新数据
然后开始绘图,就行了
如果不是关于上述三点的问题,就不要再追问了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |