-1

2 つの画像ボックスがあり、それらを 1 つの画像としてエクスポートしたかっただけです。必要なのは、.bmp を作成するのではなく、それらをそのままの状態でエクスポートすることだけです。フォームのスクリーンショットとして実行しようとしましたが、問題は、画像がフォームよりも大きい場合があり、スクリーンショットはフォームに表示されている部分のみを取得することです。どうすればよいですか?

スクリーンショットのコードのサンプルを次に示します。

MenuStrip1.Hide()
    Dim bmpScreenshot As Bitmap = New Bitmap(Width, Height, PixelFormat.Format32bppArgb)
    ' Create a graphics object from the bitmap  
    Dim gfxScreenshot As Graphics = Graphics.FromImage(bmpScreenshot)
    ' Take a screenshot of the entire Form1  
    gfxScreenshot.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size, CopyPixelOperation.SourceCopy)
    ' Save the screenshot  
    SaveFileDialog1.ShowDialog()
    SaveFileDialog1.Filter = "Image files (*.PNG)|*.PNG|(*.JPG*)|*.JPG*"
    bmpScreenshot.Save(SaveFileDialog1.FileName)
    MenuStrip1.Show()
4

1 に答える 1

0

PictureBox1 を「背景」として使用し、PictureBox2 を PictureBox1 の「上」の小さな画像として使用すると、次のようになります。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    SaveFileDialog1.Filter = "Image files (*.PNG)|*.PNG|(*.JPG*)|*.JPG*"
    If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        Dim bmp As New Bitmap(PictureBox1.Image.Width, PictureBox1.Image.Height)
        Using G As Graphics = Graphics.FromImage(bmp)
            G.Clear(Color.Black)
            G.DrawImage(PictureBox1.Image, New Point(0, 0))
            G.DrawImage(PictureBox2.Image, PictureBox2.Location)
        End Using
        Select Case System.IO.Path.GetExtension(SaveFileDialog1.FileName).ToUpper
            Case ".PNG"
                bmp.Save(SaveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Png)
            Case ".JPG"
                bmp.Save(SaveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg)
        End Select
    End If
End Sub
于 2013-07-14T00:59:30.873 に答える