在图片框中显示图像而不预先保存图像?

时间:2014-03-04 08:29:59

标签: vb.net save jpeg scale picturebox

我有一个图片框。用户可以在其上绘制不同的rectangles,假设用户绘制的rectangles超出了picturebox的大小,我是否可以统一调整内容的大小以适应picturebox ,即使图像尚未保存?

我只能管理已加载的resize内容和已保存的图像文件。我用来绘制rectangles的代码如下:

gr.FillRectangle(Brushes.Black, 0, 0, 2, 75)

Rectangles确实出现在picturebox上。 此外,我无法使用以下代码保存:

PictureBox1.Image.Save("C:\test\myimage.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

我得到的错误是:     Object reference not set to an instance of an object.

2 个答案:

答案 0 :(得分:1)

当我想用图片填充图片框而不保存到硬盘时我使用System.IO.MemoryStream

PictureBox1.Image = New System.Drawing.Bitmap(New IO.MemoryStream(New System.Net.WebClient().DownloadData("http://upload.wikimedia.org/wikipedia/commons/e/ec/Banksy.on.the.thekla.arp.jpg")))

答案 1 :(得分:0)

这可能是因为您的PictureBox没有分配“Image”对象。

您可以在此处找到解决方案(第一个答案):getting image from a picturebox

[另外,您可能会在以后遇到有关保存到根文件夹(C :)的问题。例如,尝试使用本地桌面上的文件夹以避免任何访问权限错误。]

修改 这取自上面的链接。在我看来,你还没有尝试过。

myPictureBox.Image =  New Bitmap(myPictureBox.ClientSize.Width, _
                                 myPictureBox.ClientSize.Height) 

'Then, when you want to perform some drawing, use a Graphics object from the Image instead of the PictureBox:

Using g As Graphics = Graphics.FromImage(myPictureBox.Image)
    ' do the drawing ' 
End Using