Ich füge zwei feste Kreise (Formen) auf ein Formular, ändere ihre Farben und verschiebe sie. Wenn ich sie in die richtige Position bringe, möchte ich das Vollfarbbild des Formulars erfassen und es so schnell wie möglich in ein Array einfügen. Wie kann ich das machen?Formularbild in Array setzen (VB .net)
Hier ist, wie ich die Objekte zeichnen: Ich bekomme ein OvalShape von VB PowerPacks in VB2010Express und zeichnen es als ein Kreis auf dem Formular. Danach, stelle ich es im Code:
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
Hier ist, was ich mit DrawToBitmap versucht haben (die meisten davon aus Stack-Überlauf kopiert): Button1.Click meine Addition ist.
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- save-lang = 1 und cs-lang = vb # code-snippet-1). –
Danke @VisualVincent. Ich meine, ich möchte das Bild der Form und die Formen, wie sie auf dem Formular erscheinen, erfassen. Ich nehme an, Ihr Vorschlag holt das Bild in eine Bitmap und von dort muss ich die Bitmap in ein Array setzen - ich denke ich kann das, aber zuerst die Bitmap. Ich habe eine Zeile: Me.DrawToBitmap (bm, Neues Rechteck (0,0, wid, hgt)) mit allem deklariert und dann speichere ich die Datei, die sich als winzig und nicht sichtbar in Photoshop. Abmessungen sind 240x320, also sollte die Datei größer als 11 Bytes sein. Es muss eine Million Beispiele dafür im Internet geben, ich habe sie einfach nicht gefunden. –
Ich habe verstanden, dass Sie das wollten. 'DrawToBitmap()' funktioniert in einigen Fällen, aber die tatsächliche Antwort auf Ihre Frage hängt davon ab, wie Sie die Formen zeichnen. Es wäre am besten, wenn Sie uns Ihren Code zeigen würden. Was Ihren Versuch angeht, haben Sie nicht gezeigt, wie die Variablen 'wid' und' hgt' deklariert werden, noch wie Sie die resultierende Bitmap speichern. Bitte bearbeiten Sie Ihre Frage, um Details (vorzugsweise Code) über das Zeichnen Ihrer Formen und Ihre Versuche mit 'DrawToBitmap()' einzufügen. –