سؤال

وأنا أعمل على تطبيق يستخدم عدة ضوابط قماش كبيرة (عدة آلاف بكسل عبر)، الطبقات فوق بعضها البعض. يسيطر على قماش أنفسهم غير مرئية تماما، ولكن كل يحتوي على عدد من الضوابط، وخاصة الصور.

وسؤالي هو، هل هناك حد أقصى لحجم الموصى بها للحصول على قماش، أم أنها مجرد مسألة الذاكرة؟ وأيضا، هل نحن أفضل حالا تحديد حجم قماش إلى (0، 0) والاستفادة من حقيقة أننا يمكن أن تجعل بسعادة الضوابط خارج حدود قماش؟

شكرا،

وG

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

المحلول

ومن فهمي للأحشاء من Canvas، وينبغي أن لا تحتاج إلى ذاكرة إضافية لكونها أكبر.

وأول ما يتبادر إلى ذهني على وجود غير الصفر Canvas الحجم هو أنه يسمح احد لوضع العناصر على ذلك نسبيا إلى أي من الزوايا الأربع، والتي تساعد عندما على سبيل المثال تغيير حجم الحاوية.

نصائح أخرى

واحترس: الحد الأقصى لحجم قماش سيلفرلايت هو 32767 نقطة. هذا هو لأنه لم يتم تخزين حجم UIElements حيث يتحرك كما هو الحال في برنامج الأغذية العالمي، ولكن في 32 كميات قليلا منها 16 بت شكل عدد صحيح من حيث الحجم وتشكل 16 بت الجزء العائم من ذلك. لذا تأكد من قماش ليست أكبر من ذلك ولن يكون.

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

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

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