2011-02-07 6 views
0

ユーザーがボタンをクリックすると、アクティブなFlashオブジェクトが埋め込まれた新しいフレームが開きます。私はそれを開くために使用したコードは以下の通りです:C#フォームに埋め込まれたFlashアニメーションは、指定されたサイズを無視します

What the user sees

I:

private void button1_Click(object sender, EventArgs e) 
    { 
     Form f = new Form(); 
     System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); 
     AxShockwaveFlashObjects.AxShockwaveFlash swf = new AxShockwaveFlashObjects.AxShockwaveFlash(); 
     ((System.ComponentModel.ISupportInitialize)(swf)).BeginInit(); 
     f.SuspendLayout(); 

     swf.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
        | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right))); 
     swf.Enabled = true; 
     swf.Location = new System.Drawing.Point(1, -1); 
     swf.Name = "axShockwaveFlash1"; 
     swf.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axShockwaveFlash1.OcxState"))); 
     swf.Size = new System.Drawing.Size(800, 600); 
     swf.TabIndex = 0; 


     f.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
     f.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     f.ClientSize = new System.Drawing.Size(800, 600); 
     f.Controls.Add(swf); 
     f.Name = "Form1"; 
     f.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); ; 
     f.Text = "lol"; 
     ((System.ComponentModel.ISupportInitialize)(swf)).EndInit(); 
     f.ResumeLayout(false); 

     swf.LoadMovie(0, "http://web2.flashgames.it/giochi/puzzle/kaleid/game.swf"); 
     swf.DisableLocalSecurity(); 
     f.Show(); 
    } 

テストプログラムは、それがこの見て、1を除いて、何の問題もなく、複数のユーザーによって実行されています問題はアプリケーション自体にあるのではなく、Flash Playerにあると考えてください。だから、質問は、私は何が欠けているのですか?ウィンドウをデフォルトのサイズに強制するフラッシュ設定はありますか?

+0

ユーザー設定の違いについて詳しく説明できますか? – Hawxby

+0

それをテストしたすべてのユーザーには、最新の安定したフラッシュプレーヤーとshockwaveプレーヤーがインストールされていました。 OSに関しては、問題が発生した唯一のユーザーはWindows 7を実行していた(私が彼と話すことができるようになるとすぐに、彼の構成についてもっと詳しく説明する)。他の人はwin7 32bit、win7 64bit、winxpを持っていました。 – kaharas

+0

プログラムが動作していないシステムはWin 7 Home Premium 64bitです – kaharas

答えて

1

ユーザーは120dpiでWindowsを実行しているように見え、WinFormsは自動的にフォームを大きくして対応します。 (フォームにAutoScaleModeを明示的に設定している、つまり、より高いdpiモードでフォームを大きくするように明示している)。 120 dpi。

しかし、コントロールのサイズを800x600でハードコーディングし、AutoScaleModeを設定していないので、それはちょうど800x600、つまりフォームよりも小さくなります。

は、サイズが重複していない、のいずれかいっそのこと、同様 swfにAutoScaleModeを設定し、または、それらと同じサイズにするには - swfからアンカーとサイズを削除し、代わりに swf.Dock = DockStyle.Fill;を設定します。

次に、ウィンドウを120dpiに設定して実行し、Flashアプリケーションが800x600ピクセルでない場合に正しく動作するかどうかを確認します。そうでない場合は、フォームのAutoScaleModeをNoneに変更して自動スケーリングを無効にします。

+0

私はこれで少しはやらなければなりませんでした。最後に、解決策はswf.Dock = DockStyle.Fill;を追加することでした。上のように他のすべてを残す。ありがとうございました! – kaharas

関連する問題