嵌入c#形式的Flash动画忽略给定的大小
我有一个简单的C#程序,当用户单击按钮时,它会打开一个新的框架,其中嵌入了activex flash对象。我用来打开它的代码如下:嵌入c#形式的Flash动画忽略给定的大小,c#,flash,C#,Flash,我有一个简单的C#程序,当用户单击按钮时,它会打开一个新的框架,其中嵌入了activex flash对象。我用来打开它的代码如下: private void button1_Click(object sender, EventArgs e) { Form f = new Form(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentMode
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();
}
测试程序已由多个用户运行,没有任何问题,只有一个用户看到以下情况:
我认为问题不在于应用程序本身,而在于flash播放器。所以,问题是,我错过了什么?是否存在强制窗口具有默认大小的闪存设置?看起来该用户正在以120dpi的速度运行Windows,WinForms会自动将您的窗体变大以适应需要。(您在表单上显式设置了AutoScaleMode,即显式告诉它在更高dpi模式下使表单更大。)看起来表单比SWF大33%,而SWF大约适合96 dpi和120 dpi 但是,由于您将控件的大小硬编码为800x600,并且没有在其上设置AutoScaleMode,因此它正好是800x600,即比表单小 要使它们具有相同的大小,也可以在
swf
上设置AutoScaleMode,或者,更好的是,不要复制大小--从swf
中移除锚点和大小,并设置swf.Dock=DockStyle.Fill代码>取而代之
然后将windows设置为120dpi并运行,如果不是800x600像素,则查看Flash应用程序是否正常工作。如果没有,您将希望通过将表单的AutoScaleMode更改为None来禁用自动缩放功能。能否提供用户设置之间差异的详细信息?每个测试过它的用户都安装了最新的stable flash player和shockwave player。至于操作系统,唯一有问题的用户是运行Windows7(只要我能和他谈谈,我会告诉你更多关于他的配置)。其他的有win7 32位、win7 64位或winxp。好的。这个程序不起作用的系统是Win 7 Home Premium 64bitI,我不得不在这个系统上做一些工作。最后,解决方案是添加swf.Dock=DockStyle.Fill;把其他一切都留在上面。非常感谢。