سؤال

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

في الأساس، لدي التمرير أفقيا ScrollViewer الذي يحتوي على Image.مصدر الصورة واسع VirtualSurfaceImageSource (على الأقل ~ 10000 × 500 بكسل).عرض ScrollViewer هو 1280 بكسل.

عندما أقوم بتمرير عارض التمرير باستخدام التحريك باللمس، تومض الصورة أحيانًا - يختفي جزء من الصورة ثم يتم إعادة رسمها.يحدث هذا عادةً عندما يتوقف التمرير بالقصور الذاتي.تكون الصورة مرسومة بالكامل بالفعل عند تمريرها إلى العرض، ولكن لسبب ما يتم مسحها و IVirtualSurfaceUpdatesCallbackNative::UpdatesNeeded() يسمى.

لقد قمت بتحميلها فيديو يوضح المشكلة.شاهد ماذا يحدث عندما يتوقف التمرير (عند 0:02، 0:17، إلخ...)

أي أفكار لماذا يحدث هذا؟

لقد لاحظت أيضًا أن الخفقان لا يحدث إذا كان عرض الصورة حوالي 5000 بكسل أو أقل.


إذا كنت ترغب في إعادة إنتاج هذا، فابدأ من نموذج تطبيق مجلة Direct2D وأضف المزيد من النص في Sample.story، ضمن <text name="butterfly-body"> العلامة - ما عليك سوى نسخ النص الموجود 10 مرات أو نحو ذلك.حاول تمرير صفحة الفراشة في كلا الاتجاهين وبسرعات متفاوتة، وسترى ما يبدو أنه نفس المشكلة.

لقد طرحت هذا السؤال في منتدى MSDN, ، لكن حتى الآن لم أتلق أي إجابة.

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

المحلول

لم تعد هذه مشكلة في Windows 8 Release Preview، لذلك ربما كان مجرد خطأ في Consumer Preview.

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