2011-02-07 56 views
0

我有,當一個用戶點擊一個按鈕時,打開與嵌入在它的ActiveX flash對象新幀的簡單C#程序。我用它來打開它的代碼如下:Flash動畫忽略給定尺寸

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(); 
    } 

測試程序已經被幾個用戶的身份運行,沒有任何問題,除了一個,那看到這個:

What the user sees

我不要認爲問題出在應用程序本身,而是出現在Flash Player中。所以,問題是,我錯過了什麼?是否有強制窗口具有默認大小的閃光燈設置?

+0

您能提供有關用戶設置之間差異的詳細信息嗎? – Hawxby 2011-02-07 13:21:27

+0

每個測試過的用戶都安裝了最新的穩定的Flash Player和Shockwave播放器。至於操作系統,唯一遇到問題的用戶就是運行Windows 7(只要我可以與他交談,我會告訴你更多關於他的配置)。其他人有win7 32bit,win7 64bit或winxp。 – kaharas 2011-02-07 13:34:00

回答

1

貌似用戶在120DPI運行Windows,和WinForms會自動讓你的形式更大的適應。 (你明確地在你的表單上設置了AutoScaleMode,即明確地告訴它在高分辨率模式下使表單變大。)看起來表單看起來比SWF大33%左右,這對於96對比來說是正確的。 120 dpi。

但是既然你硬編碼控件的尺寸爲800x600,並在其上不設AutoScaleMode,這也正是800×600,即比形式更小。

爲了讓他們相同的大小,無論是設置AutoScaleMode上swf一樣好,甚至更好,但不重複的大小 - 從swf刪除錨點和大小,並設置swf.Dock = DockStyle.Fill;代替。

然後將Windows設置爲120DPI和運行,並查看是否Flash應用程序工作正常,如果它不是在800x600像素。如果沒有,您需要通過將表單的AutoScaleMode更改爲None來禁用自動縮放。