2015-06-06 103 views
0

有什麼辦法可以在我的表單上包含.swf並且還保留其原始透明度?也就是說,所以你可以看到它背後的任何控件(顯然是在透明區域)。這看起來不太可能,因爲我知道vb無法控制flash的activex控件(因此控件的渲染背景?),但想知道是否有任何解決方法?在表單上保留swf透明度vb

相關代碼thusfar:這裏

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() 
+0

在.NET中沒有「後面」的真正概念。透明背景意味着「使用父背景色」,在這種情況下,父母是表單。有1或2種方法來模擬它,但在這種情況下不可能。 – Plutonix

+0

看起來不可能那麼...... :( – stigzler

回答

0

在沒有任何其他的解決方案,這就是我所做的:

基本上,我剛剛創建了一個新的形式與transparetn背景。然後,您將其覆蓋到主窗體上(您可以鏈接任何窗體以相互移動和調整大小等)。然後,您將閃光燈背景設置爲與表格透明度鍵匹配,然後完成。簡要說明代碼:

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