Я положил два сплошных круга (фигуры) на форму, изменил их цвета и передвинул их. Когда я нахожу их в нужное положение, я хочу захватить полноцветное изображение формы и как можно быстрее поместить ее в массив. Как я могу это сделать?Поместить изображение формы в массив (VB .net)
Вот как я рисую объекты: Я получаю OvalShape от VB PowerPacks в VB2010Express и рисую его как круг на форме. После этого, я настроить его в коде:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
OccultSize1 = 100
OccultSize2 = 50
OvalShape1.Width = OccultSize1
OvalShape1.Height = OccultSize1
OvalShape2.Width = OccultSize2
OvalShape2.Height = OccultSize2
OvalShape1.Left() = 155 - OvalShape1.Width/2
OvalShape1.Top() = 153 - OvalShape1.Height/2
OvalShape2.Left() = 155 - OvalShape2.Width/2
OvalShape2.Top = 85 'temporary
OvalShape1.FillColor = Color.Yellow
OvalShape1.BorderColor = Color.Yellow
OvalShape2.FillColor = Color.Blue
OvalShape2.BorderColor = OvalShape2.FillColor
Label1.Text = "100"
Label2.Text = "50"
Label3.Text = "xxx"
tbHue.Value = OvalShape2.FillColor.GetHue
RadioButton1.Checked = False
RadioButton2.Checked = True
LineShape1.Visible = False
LineShape2.Visible = True
OvalShape3.Visible = False
End Sub
Вот что я пытался с DrawToBitmap (копируется большая часть его от переполнения стека): Button1.Click мое добавление.
Private Function GetFormImage(ByRef GetBitmap As String) As Bitmap
' Make the bitmap.
Dim wid As Integer = Me.Width
Dim hgt As Integer = Me.Height
Dim bm As New Bitmap(wid, hgt)
' Draw the form onto the bitmap.
Me.DrawToBitmap(bm, New Rectangle(0, 0, wid, hgt))
bm.Save("E:\rhtempsave\bm.bmp")
' Make a smaller bitmap without borders.
wid = 240 'Me.ClientSize.Width
hgt = 320 'Me.ClientSize.Height
Dim bm2 As New Bitmap(wid, hgt)
' Get the offset from the window's corner to its client
' area's corner.
Dim pt As New Point(0, 0)
pt = PointToScreen(pt)
Dim dx As Integer = 37 'pt.X - Me.Left
Dim dy As Integer = 10 'pt.Y - Me.Top
' Copy the part of the original bitmap that we want
' into the bitmap.
Dim gr As Graphics = Graphics.FromImage(bm2)
gr.DrawImage(bm, 0, 0, New Rectangle(dx, dy, wid, hgt), _
GraphicsUnit.Pixel)
bm2.Save("E:\rhtempsave\bm2.bmp")
Return bm2
End Function
[** Control.DrawToBitmap **] (https://msdn.microsoft.com/en-us/library/system.windows.forms.control.drawtobitmap (v = vs.110) .aspx? Cs- копи-LANG = 1 & CS-LANG = VB # кода сниппет-1). –
Спасибо @VisualVincent. Я имею в виду, что хочу захватить образ формы И фигуры, как они появляются на форме. Я предполагаю, что ваше предложение получает изображение в растровое изображение, и оттуда я должен поместить битмап в массив - я думаю, что могу это сделать, но сначала растровое изображение. У меня есть строка: Me.DrawToBitmap (bm, New Rectangle (0,0, wid, hgt)) со всем объявленным, а затем я сохраняю файл, который оказывается крошечным и не отображается в Photoshop. Размеры 240x320, поэтому файл должен быть больше 11 байт. В Интернете должно быть миллион примеров этого, я просто их не нашел. –
Я понял, что вы этого хотели. 'DrawToBitmap()' будет делать трюк в некоторых случаях, но фактический ответ на ваш вопрос отличается в зависимости от того, как вы рисуете фигуры. Было бы лучше, если бы вы показали нам свой код. Что касается вашей попытки, вы не указали, как объявлены переменные 'wid' и' hgt', а также как сохранить приведенный растровый рисунок. Измените свой вопрос, чтобы указать подробности (предпочтительно код) о том, как вы рисуете свои фигуры, а также ваши попытки, используя 'DrawToBitmap()'. –