von Steuerelemt ein Bild machen

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-checker.

    von Steuerelemt ein Bild machen

    Wie kann ich von einem Beliebigen Steuerelemnt ein Bild machen und dieses auf einem beliebigen Pfad abspeichern?

    Keine PN's bezüglich VB an mich! Dafür gibt es das Forum!

    :Kreis hier. Kreis da.:

    Meinst du wärend der Laufzeit? Wieso kannst du das nicht vorher machen? Mach doch nen Screenshot, ermittle die Position des Steuerlements Mittels der Position deer Form auf dem Bildschrim, schneide den Teil des Bildes aus. Und dann halt als image speichern.
    es soll alt ein Scrrenshot gemacht werden von dem Steuerlement, in dem Fall ein WebBrowser, wenn ich auf einen Button klicke...

    Keine PN's bezüglich VB an mich! Dafür gibt es das Forum!

    :Kreis hier. Kreis da.:

    Nein, Code sehe ich auch keinen. Wie auch, wo sollte der den herkommen?
    Erwartest du ernsthaft dass ich dir den fixfertigen Code schreibe? Ich habe dir eine Hilfestellung gegeben, aber ich habe wirklich besseres zutun als dir fixfertigen Code zu posten. Sry falls das jetzt etwas "garstig" rüberkommt, aber "ich seh kein Code" hat mich doch etwas erstaunt.
    Und was ich meine? Lies einfach nochmal jeden Post in diesem Thread von mir durch, es sind ja nur 2, bevor du fragst ;)
    sorry war nur gradn bissle genervt, net von dir, sondern den leuten die mich grad durch alle möglichen Proggs zu gepostet ham....

    Keine PN's bezüglich VB an mich! Dafür gibt es das Forum!

    :Kreis hier. Kreis da.:

    @ dusti: wenn jemand schon so fragt, dann ist es relativ warscheinlich, dass die Person nich weiß, wie man nen screenshot macht, dafür brauch er dann schon nen Code oder nen Link...

    Es gibt ne Funktion, mit der du das noch einfacher als dusti das beschreibt hinbekommst:

    VB.NET-Quellcode

    1. Dim Screenshot As Bitmap
    2. Dim w As Integer = Me.Width ' Breite des Controls / der Form
    3. Dim h As Integer = Me.Height ' Höhe des Controls / der Form
    4. Screenshot = New Bitmap(w, h)
    5. ' Screenshot vornehmen und zurückgeben
    6. Me.DrawToBitmap(Screenshot, Rectangle.FromLTRB(0, 0, w, h))
    7. PictureBox1.Image = Screenshot

    hab ich von microsoft.com/germany/msdn/lib…rawToBitmap.mspx?mfr=true
    Naja, ehrlich gesagt verstehe ich diese Einstellung nicht ganz. Wieso muss ich demjenigen die Links bei Google heraussuchen? Beim anderen kommen genau dieselben Treffer, bei den selben Suchwörtern. Und ich denke man kann es eigentlich jedem zumuten, bei Google zu suchen. Natürlich ist es schön, wenn jemand anderes Code oder direkt nen Link postet, wenn er den gerade weiss, aber wieso soll ich für den anderen nach Links suchen?
    So, is wirklich nich bös gemeint! Ganz ehrlich!

    Zurück zum Thema:
    Dein Code verlangt aber, dass entweder die Form oder das(?) Control ganz oben Links liegt. Das ist zwar bei einer Form noch relativ häufg, aber auf keinen als anzunehmen. Bei einem Controll ist es dagegen höchst unwahrscheinlich. Deshalb hatte ich in meinem ersten Post auch geschrieben, dass man die Koordinaten "entwickeln" muss.
    wie meinst du das? Bei mir klappts erstklassig! Ich hab die Picturebox übrigens nur genommen, um zu schaun, obs klappt. Und es wurde tatsächlich die Form mitsamt dem Button, den ich als Test mit drauf gepackt hab, angezeigt.
    Echt? Naja, dann sag ich nix mehr. Ich dachte einfach deshalb, da du als Left und Top beidesmal 0 angegeben hast, also ganz links oben. Das müsste dann doch heissen, dass ausgehend von der linken oberen Ecke ein Foto mit der Breite und Höhe die du ermittelt hast, gemacht wird. Oder hab ich jetzt einen Denkfehler?

    Lupus schrieb:

    Es gibt ne Funktion, mit der du das noch einfacher als dusti das beschreibt hinbekommst:

    VB.NET-Quellcode

    1. Dim Screenshot As Bitmap
    2. Dim w As Integer = Me.Width ' Breite des Controls / der Form
    3. Dim h As Integer = Me.Height ' Höhe des Controls / der Form
    4. Screenshot = New Bitmap(w, h)
    5. ' Screenshot vornehmen und zurückgeben
    6. Me.DrawToBitmap(Screenshot, Rectangle.FromLTRB(0, 0, w, h))
    7. PictureBox1.Image = Screenshot

    Bei mir funktioniert das nicht. Der Screenshot hat zwar genau die gleichen Maße wie mein Control, aber es wird immer die Linke obere Ecke der Form "photografiert".

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    @vb-checker:
    Bei mir funktioniert das nicht. Der Screenshot hat zwar genau die gleichen Maße wie mein Control, aber es wird immer die Linke obere Ecke der Form "photografiert".
    du musst ja auch bei

    VB.NET-Quellcode

    1. Dim w As Integer = Me.Width ' Breite des Controls / der Form
    2. Dim h As Integer = Me.Height ' Höhe des Controls / der Form


    und bei

    VB.NET-Quellcode

    1. Me.DrawToBitmap(Screenshot, Rectangle.FromLTRB(0, 0, w, h))


    das "Me" durch das entsprechende Control ersetzen.

    mfg
    Ich habe 2 PictureBoxen, die ich in ein Bild bekommen will:

    VB.NET-Quellcode

    1. Dim w As Integer = PictureBox1.Width 'Die PictureBoxen liegen direkt untereinander und sind gleichbreit, also reicht eine Angabe
    2. Dim h As Integer = PictureBox1.Height + PicturweBox2.Height

    Das hab ich eigentlich so gelassen:

    VB.NET-Quellcode

    1. Me.DrawToBitmap(Screenshot, Rectangle.FromLTRB(0, 0, w, h)

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    so gehts bei mir wunderbar:

    VB.NET-Quellcode

    1. Dim Screenshot As Bitmap
    2. Dim w As Integer = PictureBox1.Width 'Die PictureBoxen liegen direkt untereinander und sind gleichbreit, also reicht eine Angabe
    3. Dim h As Integer = PictureBox1.Height + PictureBox2.Height
    4. Screenshot = New Bitmap(w, h)
    5. 'Screenshot vornehmen und zurückgeben
    6. PictureBox1.DrawToBitmap(Screenshot, Rectangle.FromLTRB(0, 0, w, h))
    7. 'Screenshot der PictureBox2 UNTER das bild von picturebox1 in Screenshot:
    8. PictureBox2.DrawToBitmap(Screenshot, Rectangle.FromLTRB(0, PictureBox1.Height, w, h))


    mfg