سؤال

أود أن أعرف ما إذا كان من الممكن إنشاء تأثيرات شكل لطيفة على الإطار المضغوط.

خطتي هي أنه عندما يقوم المستخدم بتحديد صورة في النموذج الرئيسي، يتم فتحها في نموذج جديد، وهذا يعمل حاليًا.ما أريد فعله الآن هو جعل النموذج الذي يحتوي على الصورة بالحجم الكامل ليتم تحميله من الحافة (يسارًا أو يمينًا) للشاشة بارتفاع حوالي 4 بكسل ثم ينزلق إلى العرض.بمجرد ظهور النموذج بالكامل على الشاشة، قم بتوسيع الارتفاع حتى يصل إلى الحد الأقصى للشاشة.

عند الإغلاق، أود تقليل الارتفاع مرة أخرى إلى ارتفاع 4 بكسل والانزلاق من الحافة مرة أخرى قبل التخلص من النموذج.

لقد جربت الكود أدناه عند إنشاء نموذج وكانت الخاصية dp.Top دائمًا 0 بغض النظر عن 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();       

ضمن نموذج DisplayPicture، لدي أيضًا ما يلي لمحاولة نقل النموذج ولكن نظرًا لأنه لا يقوم بتعيين الخاصية Top، فإن هذا الرمز لا يهم حتى الآن.

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;

    }
}

سيكون موضع تقدير كبير أي مساعدة!

تيا

ضربة واحدة

هل كانت مفيدة؟

المحلول

للقيام بذلك، ابدأ باستخدام عنصر تحكم PictureBox الذي تم تحميل صورتك فيه.اضبط الارتفاع على 4، والعرض على عرض النموذج الخاص بك، و(مهم جدًا) قم بتعيين وضع الحجم من PictureBox إلى مدد الصور.

بعد ذلك، ضع PictureBox خارج الشاشة عن طريق ضبط Top على 0 ومن Left to -Width.ضع عنصر تحكم المؤقت في النموذج الخاص بك بفاصل زمني قدره 100 (أو أي شيء آخر)، واجعل حدثه يحرك PictureBox تدريجيًا إلى اليمين حتى تصبح الخاصية اليسرى 0.بمجرد وصولك إلى تلك النقطة، اجعل حدث المؤقت يزيد الارتفاع تدريجيًا حتى يصل إلى ارتفاع النموذج.

من المحتمل أن تضطر إلى التعامل مع الوميض، ولكن هذا يجب أن يساعدك على البدء.

تحديث:لقد قرأت للتو سؤالك عن كثب، وأدركت أنك تريد بالفعل نقل النموذج نفسه من خارج الشاشة إلى وضع ملء الشاشة.هذا غير ممكن إذا كنت تريد أن يتم تحريك النموذج بأكمله (بما في ذلك شريط العنوان في الأعلى) بهذه الطريقة، ولكن يمكنك القيام بذلك عن طريق تعيين FormBorderStyle للنموذج (أو أعتقد أنه يسمى BorderStyle فقط في Compact Framework) لا شيء.مع تعيين BorderStyle على لا شيء، فإن تغيير خصائص الارتفاع والعرض والأعلى واليسار سيكون له في الواقع تأثير مرئي على النموذج (على الرغم من أن النموذج سيكون بلا حدود). وبخلاف ذلك، يتم تجاهل هذه الخصائص تمامًا في Windows Mobile, ، وهذا على الأرجح هو السبب وراء عدم ظهور الكود الخاص بك وكأنه يفعل أي شيء.

التحديث 2:هنا إجابتي إلى سؤال WM مشابه، والذي قد يساعدك في جعل نافذتك المتحركة تبدو وكأنها نافذة حقيقية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top