Transperentes Bild in Picturebox

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von memo12.

    Transperentes Bild in Picturebox

    Hallo,
    Ich wollte ein PNG-Bild einfügen wo in der mitte ein Viereck ist und umdrum ist es transperent, nun hab ich es in einer Picturebox eingefügt, leider sieht man den Hintergrund der Picturebox, dieser soll jedoch transperent sein (sodass man die picturebox dahinter sieht), wenn ich jetzt den Transperenzy Key setzt schaut er jedoch komplett durch das Programm (sodass ich in diesem Teil mein Desktop sehe)

    Wie geht das anders?

    Vielen Dank
    LG
    Ich hab das noch nicht so ganz verstanden, GDI+ kann ich ja nicht mit Me.load aufrufen, sondern mit Me.paint, aber wieso zeigt er mir dann nichts an?

    Code:

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    2. Dim tmpPen As New Pen(Color.Black, 4) 'Überladungen anschauen, spart evtl code!
    3. tmpPen.Width = 30 'ändert die Dicke des Stiftes fest
    4. tmpPen.Brush = New TextureBrush(New Bitmap("C:/test.png"))
    5. With e.Graphics
    6. .DrawEllipse(tmpPen, 50, 50, 100, 100)
    7. End With
    8. End Sub


    Das hab ich jetzt so aus dem Tutorial was Gonger96 geschickt hat
    Ich glaub du hast das Tutorial nicht ganz verstanden. Du möchtest doch ein Bild malen

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    2. Dim bmp As New Bitmap("Pfad")
    3. e.Graphics.DrawImage(bmp, 0, 0, Me.Width, Me.Height)
    4. End Sub

    Das kannst du beliebig anpassen und so wird das orginale Bild mit Transparenz auf die Form gezeichnet.
    AH, ok Danke :)
    Jedoch wird es nur auf der Form angezeigt, wie kann ich machen das es ähnlich wie eine Picturebox im Vordergrund ist? Und wie kann ich machen das sich das dann bewegt? Bei einer Picturebox haben ja Keydown Events mit einem Timer gereicht, wie ist es jetzt hier?

    Vielen Dank
    LG

    TheMaxiSoftware schrieb:

    Timer
    Klar, du kannst alle 5ms deine Hauswand neu streichen (das Motiv bleibt dann gleich), oder du streichst sie 1x und die Farbe bleibt dran (Motiv bleibt auch gleich).
    Ich habe in der Form eine Picturebox darüber (so als Spielwelt) wenn ich diese weg nehme und dann die Picturebox bewege malt sich ein Schwarzer Strich... (dort wo ich lang laufe)

    Wenn die picturebox (Hintergrund) drüber ist, sehe ich nur die Stinknormale Picturebox des Players

    Vielen Dank
    LG
    Hab ich ja vor, nur ich verstehe noch nicht so ganz wie ich das gezeichnete bewegen kann und wie ich z.B. eine MsgBox öffnen kann wenn man gegen etwas gezeichneten rennt (mit der PictureBox hab ich das schon geschafft)


    Vielen Dank
    LG
    e.Graphics.DrawImage(bmp, New Rectangle(New Point(Bild_x, Bild_y), New Size(Breite, Höhe)


    PictureBox1.Left ist hier Bild_x
    PictureBox1.Top ist hier Bild_y


    Hier hab ich doch schon versucht zu erklären, wie du gezeichnetes bewegen kannst.

    Du musst halt statt z.B. Picturebox.left eigene Variablen deklarieren!


    Dann ist das mit der MsgBox auch nicht schwer:

    VB.NET-Quellcode

    1. If Bild_x = Hindernis_x Then
    2. MsgBox("Kontakt")
    3. End If
    Ich habe jetzt die Variablen ganz oben so genannt:

    VB.NET-Quellcode

    1. Dim Bild_x As String = 20
    2. Dim Bild_y As String = 50


    Dann im Me.paint Sub das:

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    2. If Timer3.Interval = 1 Then
    3. Dim bmp As New Bitmap(My.Resources.haus1)
    4. e.Graphics.DrawImage(bmp, New Rectangle(New Point(Bild_x, Bild_y), New Size(50, 70)))
    5. End If
    6. End Sub


    und für die Tasten zum Drücken:

    VB.NET-Quellcode

    1. Private Sub bewegen(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. kollesion.Start()
    3. Dim key As Integer
    4. key = e.KeyCode
    5. If key = Keys.Up Then
    6. Dim x As Integer : x = 150
    7. Dim y As Integer : y = 250
    8. Dim point As System.Drawing.Point
    9. point.Offset(x, y)
    10. PictureBox2.Location.Offset(point)
    11. End If
    12. Select Case e.KeyCode
    13. Case Keys.Up
    14. Bild_y = +5
    15. Case Keys.Down
    16. Bild_y = -5
    17. Case Keys.Left
    18. Bild_x = -5
    19. Case Keys.Right
    20. Bild_x = +5
    21. Case Keys.M
    22. Map.Visible = True
    23. Map.Dock = DockStyle.Fill
    24. Case Keys.C
    25. Map.Visible = False
    26. End Select
    27. End Sub


    Und es bewegt sich nicht, kann mir jemand sagen wo der Fehler liegt?

    Vielen Dank
    LG