2014-09-23 85 views
0

我需要保存PictureBox,包括其背景到JPG文件在硬盘中; 到目前为止,我可以从资源加载图片,然后将PictureBox保存到硬盘驱动器,但它删除背景; 我的代码如下:VB.Net图片背景保存

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 
    PictureBox1.Image = My.Resources.ResourceManager.GetObject("test.jpg") 
    Dim Image As New Bitmap(800, 400) 
    Dim MekSaveImage As Graphics = Graphics.FromImage(Image) 
    For Parts = 0 To 3 
     RRRR = 10 + Parts * 198 
     Dim RectPen As New Pen(Color.Red) 
     RectPen.Width = 2 
     Dim rect As New Rectangle(RRRR, 10, 188, 300) 
     MekSaveImage.DrawRectangle(RectPen, rect) 
    Next 
    PictureBox1.Image = Image 
    PictureBox1.Image.Save("C:\Test\Test.jpg", Imaging.ImageFormat.Jpeg) 
End Sub 

在此先感谢帮助/评论。

+0

在循环之前,使用MekSaveImage对象将picturebox的'.BackgroundImage'绘制到'Image'。 – Jens 2014-09-23 07:48:39

+0

谢谢Jens的评论;大概需要2行代码;你能告诉我代码吗...我正在尝试,但似乎我犯了一些错误。 – Abbas1999 2014-09-23 08:22:05

回答

1

所以我想你在test.jpg有你的Backgroundimage,并且想在上面画矩形。

从图像开始。资源本身没有改变。

Dim BackgroundImage As Bitmap = My.Resources.ResourceManager.GetObject("test.jpg") 

从该图像中创建一个图形对象,并在顶部绘制矩形。您不需要从新图像创建图形图像。你可以使用现存的,然后将其用作画布。

Using g As Graphics = Graphics.FromImage(BackgroundImage) 
    'Draw the Rectangles 
    Using RectPen As New Pen(Color.Red) 
     RectPen.Width = 2 
     For Parts = 0 To 3 
      RRRR = 10 + Parts * 198 
      Dim rect As New Rectangle(RRRR, 10, 188, 300) 
      g.DrawRectangle(RectPen, rect) 
     Next 
    End Using 'RectPen 
End Using 'g 
PictureBox1.Image = BackgroundImage 'Display the result 
BackgroundImage.Save("C:\Test\Test.jpg", Imaging.ImageFormat.Jpeg) 'Save to disk. 

我使用Using块,以确保处置的图形ressources对象和笔。