Picturebox mit video und rund

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Picturebox mit video und rund

    Hallo liebe Leute,
    Ich arbeite seit 2 Wochen mit VB 2010 und habe dabei folgendes Problem: Ich möchte in einer Picturebox ein Video abspielen, was soweit auch gut geklappt hat. Danach habe ich die Picturebox rund geschnitten, was auch noch funktioniert hat. Das Problem ist jetzt das VB das Video auf der X-Achse zusammenstaucht, was ich nicht möchte.

    Ich habe schon verschiedenes versucht mit auto size etc. nichts davon hat irgendwas gebracht. Hat jemand ne Idee wie ich dieses zusammenstauchen weg bekomme? Das Video an sich ist perfekt quadratisch.
    Außerdem soll das Video in einem Loop laufen. Hat dazu jemand Ideen?

    Der Code den ich benutzte ist folgender:
    Imports Microsoft.DirectX
    Imports Microsoft.DirectX.AudioVideoPlayback

    Public Class Form1

    'zum Abrunden der Picturebox

    Sub abrunden(ByVal was As Object, _
    ByVal x As Integer, ByVal y As Integer, _
    ByVal width As Integer, ByVal height As Integer, _
    ByVal radius As Integer)


    Dim gp As System.Drawing.Drawing2D.GraphicsPath = _
    New System.Drawing.Drawing2D.GraphicsPath()

    gp.AddLine(x + radius, y, x + width - radius, y)
    gp.AddArc(x + width - radius, y, radius, radius, 270, 90)
    gp.AddLine(x + width, y + radius, x + width, y + height - radius)
    gp.AddArc(x + width - radius, y + height - radius, radius, radius, 0, 90)
    gp.AddLine(x + width - radius, y + height, x + radius, y + height)
    gp.AddArc(x, y + height - radius, radius, radius, 90, 90)
    gp.AddLine(x, y + height - radius, x, y + radius)
    gp.AddArc(x, y, radius, radius, 180, 90)
    gp.CloseFigure()

    was.region = New System.Drawing.Region(gp)
    gp.Dispose()
    End Sub

    'zum einfügen der video datei in die Picturebox

    Dim Videodatei As Video = New Video("Video-pfad")
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Videodatei.Owner = PictureBox1
    Videodatei.Play()
    abrunden(PictureBox1, 29, 29, 140, 140, 140)
    End Sub

    End Class

    Für Vorschläge, Ideen, Code etc. wäre ich euch sehr dankbar.
    Liebe Grüße Pablo
    versuche mal das aussehen der pic-box im designer zu bearbeiten und nicht per code.
    grundsätzlich werden die frames eines videos oder auch eines bildes ja als karthetisches koordinatensystem betrachtet. die abrundungen sind aber kreise, also wurzelfunktionen. es könnte durchaus sein, dass das koordniatensystem über diese kreisgleichung transponiert wird und somith nicht mehr karthesisch ist, was die stauchung des videos begründen würde. dadurch verschieben sich die vektoren des frames vom ursprung 0,0 weg.
    Willkommen im Forum. :thumbup:

    Pablo schrieb:

    und habe dabei folgendes Problem:
    Diese Formulierung ist falsch, Di hast 2 Probleme, die Du vermengst, so dass Du sie (zunächst) nicht richtig lösen kannst.
    1. Du willst ein Video abspielen.
    2. Du willst einer PictueBox ein rundes Aussehen geben.
    Zunächst solltest Du jedes dieser beiden Probleme getrennt lösen, mach Dir dazu ruhig 2 Projekte.
    Löse jedes Problem für sich. Wenn Du beide Probleme einzeln zu Deiner Zufriedenheit gelöst hast, pack sie in einem weiteren Projekt zusammen.
    Fang an und gib Deinem Projekt Option Strict On, denn Object hat keine Property Region.
    Sieh Dir die SizeMode-Property der PictureBox an.
    Und:
    Welches Video-Control verwendest Du - wie ist der Name der DLL, die Du importierst?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!