C#WinForm / WPF + Adob​​e Flash

みなさん、こんにちは、これは私の最初の投稿です。それ以前は、このサイトの読者のみでした。 この投稿のテーマは、2つの異なるテクノロジーの相互作用であり、それぞれが独自の管理環境であるAdobe FlashとMicrosoft .NETで動作します。



かつて、ある.NETプロジェクトで、WinFormのGDI +グラフィックスの代替品を探していました。 そのような代替手段として、フラッシュ技術が選択されました。 私は当時SilverLightに慣れていなかったため、WebBrowserコンポーネントを介してWinFormのこのテクノロジーとのやり取りを整理できませんでした。





Adobe Shockwave Playerをインストールした後、Visual StudioでComオブジェクトを選択すると、Shockwave Flashオブジェクトのビジュアルコンポーネントが使用可能になります。 このコンポーネントには、swf形式のクリップを操作するための多くのプロパティがあります。 特に、Movieプロパティでクリップへの物理パスまたはネットワークパスを設定すると、ブラウザの場合と同じようにフォームに表示されます。 次に、SetVariable(文字列プロパティ、文字列データ)メソッドを使用して、C#から任意のFlashプロパティに情報を転送できます。



WinForm + Flash





ActionScript 2.0(1.swf)で外部Flashプロパティを宣言する

//  getvar = function () { }; //   setvarData = function (value) { var Value:Number=Number(value); //    _root.gotoAndStop(Value+1); }; addProperty("MyObject", getvar, setvarData);
      
      







C#からFlashムービーに情報を転送します。

その前に、Flashという名前のShockwave Flash ObjectコンポーネントがWinFormで設定され、そのMovieプロパティが1.swfムービーへの物理パスで設定されていました。

 int i = 1; Flash.SetVariable("MyObject",i.ToString());
      
      







WPF +フラッシュ





最近、WPFアプリケーションがFlashと連携してどのように見えるかが興味深いものになりました。 私はインターネットを検索しましたが、残念ながら、そのような情報があったとしても非常に小さいことがわかりました。

その結果、彼はこのタイプのアプリケーション用のFlashコンポーネントを作成しました。



Xaml

 <UserControl x:Class="WindowsFormsApplication1.UserControl1" 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"> <Grid Background="#FF00E100" Loaded="Grid_Loaded"> <WindowsFormsHost HorizontalAlignment="Stretch" Name="windowsFormsHost1" VerticalAlignment="Stretch" DataContext="{Binding}" Focusable="True" Margin="22,12,24,21" Background="#FF00005A" /> </Grid> </UserControl>
      
      







フラッシュオブジェクト

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using AxShockwaveFlashObjects; using System.Runtime.InteropServices; namespace WindowsFormsApplication1 { /// <summary> ///   Flash /// </summary> public partial class UserControl1 : UserControl { public AxShockwaveFlashObjects.AxShockwaveFlash AxShockwaveFlash; public UserControl1() { AxShockwaveFlash = new AxShockwaveFlash(); InitializeComponent(); windowsFormsHost1.Child = AxShockwaveFlash; this.AxShockwaveFlash.VisibleChanged += new System.EventHandler(this.AxShockwaveFlash_VisibleChanged); } public string _Movie; public string Movie { set { _Movie = value; } get { return AxShockwaveFlash.Movie; } } private void AxShockwaveFlash_VisibleChanged(object sender, EventArgs e) { if (IsVisible) { try { if (Movie != null || Movie != _Movie) AxShockwaveFlash.Movie = _Movie; } catch { } } } private void Grid_Loaded(object sender, RoutedEventArgs e) { AxShockwaveFlash.Menu = false; } } }
      
      







WinFormと同様に、C#からFlashムービーに情報を転送します

その前に、 Flashという名前のUserControl1コンポーネントが配置され、そのMovieプロパティには1.swfムービーへの物理パスが設定されていました。

 int i = 1; Flash.AxShockwaveFlash.SetVariable("MyObject",i.ToString());
      
      






All Articles