Экспорт части формы окна в виде изображения - PullRequest
1 голос
/ 09 марта 2011

У меня есть форма, которая показывает график, который был сделан в Microsoft Chart control 6.0 ...

Я поместил в меню опцию, которая будет экспортировать созданный график в файл изображения ...

Может кто-нибудь сказать, как экспортировать часть графика формы как изображение (подойдет любой формат) ...

Я думал о том, чтобы сделать снимок экрана и сохранить его, но я не могу получить элементы управления в vb, чтобы сделать снимок указанной области в форме.

Ответы [ 3 ]

6 голосов
/ 09 марта 2011

вот функция C # для него

private void capture(Control ctrl, string fileName)
{
    Rectangle bounds = ctrl.Bounds;
    Point pt = ctrl.PointToScreen(bounds.Location);
    Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height);
    using (Graphics g = Graphics.FromImage(bitmap))
    {
        g.CopyFromScreen(new Point(pt.X - ctrl.Location.X, pt.Y - ctrl.Location.Y), Point.Empty, bounds.Size);
    }

    bitmap.Save(fileName,ImageFormat.Png);
}

и вызов

capture(chart1, @"c:\temp.png");

Вот вышеописанный метод c #, преобразованный в VB

Private Sub capture(ctrl As Control, fileName As String)
    Dim bounds As Rectangle = ctrl.Bounds
    Dim pt As Point = ctrl.PointToScreen(bounds.Location)
    Dim bitmap As New Bitmap(bounds.Width, bounds.Height)
    Using g As Graphics = Graphics.FromImage(bitmap)
        g.CopyFromScreen(New Point(pt.X - ctrl.Location.X, pt.Y - ctrl.Location.Y), Point.Empty, bounds.Size)
    End Using

    bitmap.Save(fileName, ImageFormat.Png)
End Sub
1 голос
/ 28 февраля 2013

Попробуйте этот код:

Imports System.Drawing.Imaging

Public Class Form1  

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  
    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  
    bmpScreenshot.Save("D:\Form1.jpg", ImageFormat.Jpeg)  
  End Sub 

End Class 
0 голосов
/ 09 марта 2011

Ключевой метод для просмотра - Control.DrawToBitmap .

Вот функция, которая возвращает Bitmap элемента управления, указанного параметром функции:

Private Function GetControlScreenshot(ByVal control As Control) As Bitmap
    Dim g As Graphics = control.CreateGraphics()
    Dim bitmap As Bitmap = New Bitmap(control.Width, control.Height)
    control.DrawToBitmap(bitmap, New Rectangle(control.Location, control.Size))

    GetControlScreenshot = bitmap
End Function

Вы можете использовать эту функцию следующим образом:

Dim controlImage As Bitmap = GetControlScreenshot(Me.dataGridView)
controlImage.Save("TestImage.bmp") 

Код немного грубоват, но я считаю, что он указывает вам правильное направление.

...