Frage

Ich würde gerne wissen, ob es möglich ist schön Form Auswirkungen auf dem kompakten Rahmen zu schaffen.

Mein Plan ist, dass, wenn ein Benutzer ein Bild auf dem Hauptformular wählt dieser in einer neuen Form geöffnet wird, das zur Zeit arbeitet. Was ich jetzt tun will, ist die Form vornehmen, die die Vollbildansicht enthält die Kante (links oder rechts) des Schirms bei etwa 4 Pixel hoch dann gleitet in Ansicht laden ab. Sobald das Formular vollständig auf dem Bildschirm ist dann die Höhe erweitern, bis sie den max für den Bildschirm treffen.

Ein Schließen möchte ich die Höhe wieder auf die 4 Pixel hoch und der Schieber über den Rand wieder reduzieren, bevor die Form angeordnet wird.

Ich habe den Code unten versucht, wenn das Formular instanziieren und die dp.Top Eigenschaft war immer 0, unabhängig von dp.Width == 240

DisplayPicture dp = new DisplayPicture(ImageUrl);
dp.WindowState = FormWindowState.Normal;
dp.Left = dp.Width * -1;
dp.Top = (dp.Height / 2) - 2;
dp.Height = 4;
dp.ShowDialog();       

In der DisplayPicture Form ich habe auch die folgenden versuchen, die Form zu bewegen, aber da es nicht in die Top-Eigenschaft dieser Code macht nicht vor.

void t_Tick(object sender, EventArgs e)
{
    if (this.Left < 0)
        this.Left += 5;

    if (this.Left > -1)
    {
        this.Left = 0;
        if (this.Height < pictureBox1.ClientRectangle.Height)
        {
            this.Height += 4;
            this.Top -= 2;
        }

        if ((this.Left == 0) && (this.Top == 0))
            t.Enabled = false;

    }
}

Jede Hilfe wäre sehr geschätzt werden!

TIA

OneShot

War es hilfreich?

Lösung

Um dies zu tun, mit einem PictureBox-Steuerelement beginnen, die Ihr Bild geladen sind. Stellen Sie die Höhe bis 4, die Breite auf die Breite des Formulars, und (sehr wichtig) den Sizemode der PictureBox auf StretchImage .

Als nächstes stellen Sie den PictureBox aus dem Bildschirm, indem Sie oben auf 0 und links -breite. Setzen Sie ein Timer-Steuerelement auf dem Formular mit einem Intervall von 100 (oder was auch immer), und seine Veranstaltung hat allmählich die PictureBox nach rechts, bis seiner Eigenschaft Left bewegen ist 0. Wenn Sie diesen Punkt zu erreichen, hat das Timer-Ereignis schrittweise Erhöhung die Höhe bis es erreicht die Höhe des Formulars.

Sie werden wahrscheinlich mit Flimmern zu tun haben, aber das sollte Ihnen den Start.

Update: Ich habe Ihre Frage nur ein wenig näher, und erkennen, dass Sie tatsächlich die Form selbst von außerhalb des Bildschirms auf Vollbild verschieben mögen. Dies ist nicht möglich, wenn Sie die gesamte Form (einschließlich der Titelleiste am oberen Rand) wollen auf diese Weise animieren, aber Sie können Art, dies zu tun, indem sie die Form der Formborderstyle-Einstellung (oder ich denke, es ist nur Border im Compact Framework genannt) Zu keiner. Mit dem Border auf None festgelegt, die Höhe zu ändern, Breite, Eigenschaften Oben und Left tatsächlich einen sichtbaren Effekt auf die Form haben (obwohl die Form randlos sein wird). Diese Eigenschaften ansonsten vollständig in Windows Mobile , ignorieren die wahrscheinlich ist, warum Ihr Code nichts zu tun schien.

Update 2: hier ist meine Antwort auf eine ähnliche WM Frage, die Sie machen Ihre animierte Fenster sehen aus wie ein echtes Fenster.

kann helfen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top