Question

J'aimerais savoir s'il est possible de créer de jolis effets de forme sur le cadre compact.

Mon plan est que lorsqu'un utilisateur sélectionne une image sur le formulaire principal, celle-ci s'ouvre dans un nouveau formulaire, cela fonctionne actuellement. Ce que je veux maintenant faire, c’est que le formulaire contenant l’image en taille réelle se charge hors de la bordure (gauche ou droite) de l’écran, à une hauteur d’environ 4 pixels, puis glisse dans la vue. Une fois que le formulaire est entièrement à l'écran, développez la hauteur jusqu'à atteindre le maximum pour l'écran.

À la fermeture, je voudrais réduire la hauteur aux 4 pixels et redessiner le bord avant de supprimer le formulaire.

J'ai essayé le code ci-dessous lors de l'instanciation du formulaire et la propriété dp.Top était toujours égale à 0, indépendamment de 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();       

Dans le formulaire DisplayPicture, je dispose également des éléments suivants pour essayer de déplacer le formulaire, mais comme il ne définit pas la propriété Top, ce code n'a pas encore d'importance.

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;

    }
}

Toute aide serait grandement appréciée!

TIA

OneSHOT

Était-ce utile?

La solution

Pour ce faire, commencez avec un contrôle PictureBox dans lequel votre image est chargée. Définissez la hauteur sur 4, la largeur sur la largeur de votre formulaire et (très important) définissez le SizeMode de PictureBox sur StretchImage .

Ensuite, placez le PictureBox hors écran en réglant Top sur 0 et Left sur -Width. Placez un contrôle Timer sur votre formulaire avec un intervalle de 100 (ou autre) et faites-le déplacer progressivement le PictureBox vers la droite jusqu'à ce que sa propriété Left devienne 0. Une fois que vous avez atteint ce point, faites-le augmenter progressivement il atteint la hauteur de la forme.

Vous devrez probablement faire face au scintillement, mais cela devrait vous aider à démarrer.

Mise à jour: Je viens de lire votre question un peu plus près et j'ai compris que vous souhaitiez déplacer le formulaire lui-même de l'écran hors écran au plein écran. Ceci n'est pas possible si vous souhaitez que le formulaire entier (y compris la barre de titre en haut) s'anime de cette manière, mais vous pouvez le faire en définissant le formulaire FormBorderStyle du formulaire (ou, je pense, simplement appelé BorderStyle dans le Compact Framework). à aucun. Lorsque BorderStyle est défini sur Aucun, la modification des propriétés Height, Width, Top et Left aura en fait un effet visible sur le formulaire (bien que le formulaire soit sans bordure). Ces propriétés sont par ailleurs complètement ignorées dans Windows Mobile , ce qui explique probablement pourquoi votre code n'a apparemment rien donné.

Mise à jour 2: voici ma réponse à une question WM similaire, ce qui peut vous aider à donner à votre fenêtre animée l'apparence d'une fenêtre réelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top