سؤال

لدي عميل يطلب إضافة صورة متحركة / مناصب إلى موقع الويب الخاص بها. في الأساس، إنها صورة معيارا الحجم، فهو يريد وضعه في إطار أضيق قليلا ويكون لديك صورة الصورة من اليسار إلى اليمين كعنصر مرئي على موقعه على الويب. ليس هناك النقر والسحب المطلوب؛ انها مجرد مقلاة متحركة من اليسار إلى اليمين، ثم إعادة البدء مع صورة أخرى.

هذه صفحة .NET، ولدي كومة من كتب Silverlight جالسة هنا بفكرة أنني سأتعلم ذلك. أنا الرقم الآن جيد في الوقت المناسب، لأنني الآن لدي فعلا استخداما حقيقيا حقيقيا لذلك. بالنسبة للسجل، أنا تجربة .NET مطور ولكن لم يلعب الكثير مع Silverlight تتجاوز قراءة الفصول الزوجية الأولى من عدد قليل من الكتب.

لذلك ... السؤال الأول، أفترض أن هذا ممكن أن أفعل مع Silverlight، هل أنا مخطئ في ذلك؟

السؤال الثاني، إذا استطعت أن أفعل ذلك، هل يمكن لشخص ما أن يشيرني في الاتجاه الصحيح بقدر ما يلزم السمات / التحكم / التكنولوجيا للقيام بذلك؟ أنا أقرأ تكبير عميق، لكن هذا لا يبدو أنه ما أريده. أحتاج فقط إلى اتخاذ حجم قياسي JPEG / GIF / أيا كان الملف واحصل عليه ببطء من اليسار إلى اليمين. ما هي ميزات Silverlight التي أحتاج إلى دراسة / قضاء بعض الوقت في التعلم من أجل القيام بذلك؟

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

المحلول

هذا هو بالتأكيد قابلة للتنفيذ. سوف يكون لديك أساسا صورة تجلس على قماش وستتعالج أحداث mousemove على تلك القماش. كمسارات الماوس من جانب إلى آخر، ستطبق ترجمة إلى الصورة لتحريكها من جانب إلى آخر.

يجب أن تدخرك التعليمة البرمجية التالية:

أضف قماشا مع صورتك إلى mainpage.xaml (لاحظ الأحداث Mousemove / Enter / إجازة)

<Canvas x:Name="LayoutCanvas" MouseMove="LayoutCanvas_MouseMove" MouseEnter="LayoutCanvas_MouseEnter" Height="200" Width="200">
     <Image x:Name="imgToMove" Source="myimage.png" />
</Canvas>

في التعليمات البرمجية الخاصة بك خلف، إضافة الأحداث الموضة / ENTER / إجازة

    Point lastMousePos = new Point();
    Point currentMousePos = new Point();
    double amountToMove = 1;
    private void LayoutCanvas_MouseMove(object sender, MouseEventArgs e)
    {
        currentMousePos = e.GetPosition(LayoutCanvas);
        if (lastMousePos.X > currentMousePos.X)
        {
            amountToMove--;
        }
        else
        {
            amountToMove++;
        }
        imgToMove.SetValue(Canvas.LeftProperty, amountToMove);
        lastMousePos = currentMousePos;
    }

    private void LayoutCanvas_MouseEnter(object sender, MouseEventArgs e)
    {
        lastMousePos = e.GetPosition(LayoutCanvas);
    }

    private void LayoutCanvas_MouseLeave(object sender, MouseEventArgs e)
    {
        imgToMove.SetValue(Canvas.LeftProperty, (double)0);
    }

إنتهيت. الآن، عند تحريك الماوس فوق الصورة، سيتم ترجمة الصورة من إما إلى اليسار إلى اليمين أو اليمين إلى اليسار. عند مغادرتك الصورة، ستعود إلى موقعها الأصلي.

نصائح أخرى

أعتقد أنك يمكن أن تفعل ذلك. اقرأ الفصل الموجود في كتابك حول الرسوم المتحركة وسترى كيف يمكنك بسهولة نقل الصورة بسهولة. وقراءة حول وضع عنصر تحكم مثل الصورة في لوحة تخطيط مثل قماش.

ما تبحث عنه يسمى تحويل الإسقاط.

بعض المصادر الجيدة هي:

Silverlight 3 PlaneProjection التمهيدي بواسطة جايمي رودريغيز

وثائق MSDN للطائرة

الفصل 7 من مؤسسة Silverlight 3 Animation by Jeff Paries

أساسا ما ستفعله هو إنشاء رسوم متحركة تطبق دوران على طول المحور Y.

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