Flash анимация, встроенная в форму c #, игнорирует заданный размер - PullRequest
0 голосов
/ 07 февраля 2011

У меня есть простая программа на C #, которая, когда пользователь нажимает на кнопку, открывает новый фрейм со встроенным в него flash-объектом activex. Код, который я использую для его открытия, следующий:

   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

Не думаю, что проблема в самом приложении, а во флеш-плеере. Итак, вопрос в том, чего мне не хватает? Существуют ли настройки вспышки, заставляющие окно иметь размер по умолчанию?

1 Ответ

1 голос
/ 07 февраля 2011

Похоже, что пользователь работает под Windows с разрешением 120 точек на дюйм, и WinForms автоматически увеличивает вашу форму, чтобы приспособиться к ней.(Вы явно устанавливаете AutoScaleMode в своей форме, т. Е. Явно указываете ей увеличивать форму в режимах с более высоким разрешением.) Похоже, что форма примерно на 33% больше, чем SWF, что примерно для 96 против120 dpi.

Но так как вы жестко программируете размер элемента управления в 800x600, а не устанавливаете AutoScaleMode на нем, он в точности равен 800x600, т. Е. Меньше, чем форма.того же размера, либо установите AutoScaleMode на swf, либо, что еще лучше, не дублируйте размер - удалите Anchor и Size из swf и установите вместо него swf.Dock = DockStyle.Fill;.

Тогдаустановите windows на 120dpi и запустите, и посмотрите, правильно ли работает приложение Flash, если оно не с разрешением 800x600 пикселей.Если нет, вы можете отключить автоматическое масштабирование, изменив AutoScaleMode формы на None.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...