Announcement

Collapse
No announcement yet.

bildausschnitt hinter einem Formuilar erfassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • bildausschnitt hinter einem Formuilar erfassen

    Hi Leute,

    mal ne simple Frage, die villeicht keine so simple Antwort hat:
    wie kann ich den Bildschirminhalt hinter einem in VB erstellten Formular ermitteln?

    zur Anwendung: ich will einfach mal versuchen nen eiegenen AeroGlass Effekt zu programmieren, dazu brauch ich den Hintergrund als image um ihn modifiziert als Image auf meinem Formular darzustellen.

    Schöne Grüße
    Smuddy

  • #2
    Hallo Smuddy,

    ich glaube du denkst da ein Stück in die falsche Richtung. Wenn du für jede Bewegung deines Fensters das aktuelle Hintergrundimage brauchst, ist das sehr Ressourcen aufwendig.

    Vielleicht solltest du dir das hier mal anschauen.

    Ich denke dort ist alles sehr gut dargestellt.

    Viel Spass dabei.

    Dirk

    Comment


    • #3
      dwmapi.dll beispiele, die nicht funktionieren habe ich schon genug gefunden. Aber auch diess Beispiel setzt Vista vorraus.

      Mit gehts auch garnicht um die kongrete Anwendung, sondern, wie man einen verdeckten Bildschirmbereich ausließt, auch unter XinXP.

      Comment


      • #4
        Du willst so zu sagen, einfach nur das Stück des aktuellen Hintergrundbildes, wo deine gestartete Form davor liegt?

        Comment


        • #5
          nicht nur des Hintergrundbildes, sondern alles, was unter dem formular liegt, was der Benutzer sehen würde, wenn das Formular nicht da wäre.

          Comment


          • #6
            Hallo Smuddy,

            auf die schnelle kann ich dir nur erstmal folgendes anbieten:

            Code:
            Imports System.IO
            
            Public Class Form1
                Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                    Dim pPicture As New cPicture
                    Me.Opacity = 0
                    PictureBox1.Image = Image.FromStream(pPicture.CreatePicture)
                    Me.Opacity = 100
                End Sub
            End Class
            
            Public Class cPicture
                Private m_mStream As New MemoryStream
                Public Function CreatePicture() As MemoryStream
                    Dim hBitmap As Bitmap = Nothing
                    Dim sz As Size = SystemInformation.PrimaryMonitorSize
                    hBitmap = New Bitmap(sz.Width, sz.Height)
                    Dim hGraphics As Graphics = Graphics.FromImage(hBitmap)
                    hGraphics.CopyFromScreen(0, 0, 0, 0, sz)
                    hBitmap.Save(m_mStream, Drawing.Imaging.ImageFormat.Gif)
                    Return m_mStream
                End Function
            End Class
            Vielleicht reicht dir das ja schon. Wenn nicht geb einfach bescheid.

            Dirk

            Comment


            • #7
              ist zumindestens ein Ansatz, den ich auch schon hatte, und auch genausoschnell wieder verworfen habe, da das Bild daruch Flackern würde, wenn ich das öfter mache.

              Comment


              • #8
                Ich habe dir per Private Message Beispielquellcode geschickt, das ganze ist auf API Basis.

                Allerdings musst du dann noch sehen wie du es regelst, das deine Form für den Screen verschwindet!

                Comment


                • #9
                  jo, danke, ich werds einfach mal probieren.

                  Comment


                  • #10
                    Wenn es funktionieren sollte, kannst du ja mal bescheid geben !

                    Comment

                    Working...
                    X