好的,所以我在WPF应用程序中嵌入Flash动画时遇到了麻烦。我尝试了很多东西,只有一个真正为我工作。
我找到了解决方案,所以我将在下面发布。
答案 0 :(得分:0)
我找到了解决方案,我按照本教程,将C#转换为VB:http://blogs.microsoft.co.il/janiv/2009/09/20/embedding-and-communicating-with-the-macromedia-flash-player-in-wpf/
但最后,我最终只用了30行代码来完成我想要的东西......
以下是WinForm用户控件的代码, WFFlashPlayer.vb :
Imports System.Windows.Forms
Namespace FlashAxControls
Partial Public Class WFFlashPlayer
Inherits UserControl
Public Sub New()
InitializeComponent()
AxShockwaveFlash.Base = "#"
AxShockwaveFlash.Movie = "#"
End Sub
End Class
End Namespace
如果是 WFFlashPlayer.Designer.vb :
Namespace FlashAxControls
Partial Class WFFlashPlayer
''' <summary>
''' Required designer variable.
''' </summary>
Private components As System.ComponentModel.IContainer = Nothing
''' <summary>
''' Clean up any resources being used.
''' </summary>
''' <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
Protected Overrides Sub Dispose(disposing As Boolean)
If disposing AndAlso (components IsNot Nothing) Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
#Region "Component Designer generated code"
''' <summary>
''' Required method for Designer support - do not modify
''' the contents of this method with the code editor.
''' </summary>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(WFFlashPlayer))
Me.AxShockwaveFlash = New AxShockwaveFlashObjects.AxShockwaveFlash()
CType(Me.AxShockwaveFlash, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'AxShockwaveFlash
'
Me.AxShockwaveFlash.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.AxShockwaveFlash.Enabled = True
Me.AxShockwaveFlash.Location = New System.Drawing.Point(0, 0)
Me.AxShockwaveFlash.Margin = New System.Windows.Forms.Padding(0)
Me.AxShockwaveFlash.Name = "AxShockwaveFlash"
Me.AxShockwaveFlash.OcxState = CType(resources.GetObject("AxShockwaveFlash.OcxState"), System.Windows.Forms.AxHost.State)
Me.AxShockwaveFlash.Size = New System.Drawing.Size(1125, 825)
Me.AxShockwaveFlash.TabIndex = 0
'
'WFFlashPlayer
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(239, Byte), Integer), CType(CType(239, Byte), Integer), CType(CType(242, Byte), Integer))
Me.Controls.Add(Me.SimpleButton1)
Me.Controls.Add(Me.AxShockwaveFlash)
Me.Name = "WFFlashPlayer"
Me.Size = New System.Drawing.Size(1125, 825)
CType(Me.AxShockwaveFlash, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
#End Region
Private AxShockwaveFlash As AxShockwaveFlashObjects.AxShockwaveFlash
End Class
End Namespace
这是WPF用户控件, FlashPlayer.xaml.vb :
Imports System.Windows.Forms.Integration
Namespace FlashAxControls
Partial Public Class FlashPlayer
Inherits UserControl
Private Sub FlashPlayer_Loaded(sender As Object, e As RoutedEventArgs)
Dim host As New WindowsFormsHost()
Dim player As New WFFlashPlayer()
host.Child = player
FlashPlayerGrid.Children.Add(host)
End Sub
End Class
End Namespace
FlashPlayer.xaml :
<UserControl x:Class="FlashAxControls.FlashPlayer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" Loaded="FlashPlayer_Loaded">
<Grid x:Name="FlashPlayerGrid">
</Grid>
</UserControl>
最后,这是我的WPF应用程序XAML代码(有点自定义):
<dxr:DXRibbonWindow x:Class="MyProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
xmlns:dxr="http://schemas.devexpress.com/winfx/2008/xaml/ribbon"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:controls="clr-namespace:FlashAxControls.FlashAxControls;assembly=FlashAxControls"
Title="MainWindow" Height="922" Width="1127" Background="#FFEFEFF2" ResizeMode="CanMinimize" BorderEffect="Default" IsAeroMode="False" DisplayShowModeSelector="False" WindowStyle="SingleBorderWindow" ShowInTaskbar="True">
<Grid>
<Grid HorizontalAlignment="Left" Grid.Row="1" Grid.ColumnSpan="2">
<controls:FlashPlayer Height="825" Width="1125"/>
</Grid>
</Grid>
</dxr:DXRibbonWindow>
我希望这可以帮助别人。