Сохранить прозрачность swf в формах vb

Есть ли способ включить .swf в мою форму, а также сохранить его первоначальную прозрачность? То есть, чтобы вы могли видеть любые элементы управления «за ним» (очевидно, в прозрачных областях). Это выглядит маловероятным, так как я понимаю, что vb не может управлять элементом управления flash ActiveX (и, следовательно, визуализируемым фоном элемента управления?), но интересно, есть ли какие-либо обходные пути?

соответствующий код до сих пор:

    Dim flash1 As New AxShockwaveFlash
    .....
    flash1.Location = New System.Drawing.Point(300, 23)
    Me.Controls.Add(flash1)
    flash1.Movie = "C:\Users\Steve\Scripts\Projects\CPWizBiz\Assets\Test SWFs\Artwork4.swf"
    flash1.Size = New System.Drawing.Size(192, 400)
    flash1.Play()

person stigzler    schedule 06.06.2015    source источник
comment
в .NET нет реальной концепции отставания. Прозрачный фон означает использование родительского фона, родителем в данном случае является форма. Есть 1 или 2 способа имитировать это, но вряд ли в этом случае.   -  person Ňɏssa Pøngjǣrdenlarp    schedule 06.06.2015
comment
Тогда это невозможно сделать... :(   -  person stigzler    schedule 08.06.2015


Ответы (1)


В отсутствие каких-либо других решений, вот что я сделал:

По сути, я только что создал новую форму с прозрачным фоном. Затем вы накладываете это на свою основную форму (вы можете связать любые формы для перемещения и изменения размера друг с другом и т. д.). Затем вы устанавливаете фон вспышки в соответствии с ключом прозрачности формы, и все готово. Краткий иллюстративный код:

 Public Sub MarqueeFlash_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.TransparencyKey = Color.FromArgb(1, 4, 3)
        Me.BackColor = Color.FromArgb(1, 4, 3)

        dim FlashCtrl as As New AxShockwaveFlash
        Controls.Add(FlashCtrl)
        With FlashCtrl
            .BGColor = Me.BackColor.R.ToString("X2") & Me.BackColor.G.ToString("X2") & Me.BackColor.B.ToString("X2")
            .Movie = IndexedDR(0).Item("File")
            .Location = New Point(10,10)
        End With
        FlashCtrl.Play()
        FlashCtrl.Size = New Size(400,300)
end sub
person stigzler    schedule 15.07.2015